إصلاحات لمشاكل مع TestRepository Subsic 3
-
20-09-2019 - |
سؤال
لقد كنت أحاول استخدام دعم مستودع اختبار Subong 3.0 لاختبار الوحدة ولكن واجهت بعض المشكلات ، لذلك اعتقدت أنني أوثقها ، والإصلاحات التي توصلت إليها:
لا تعمل أعمدة التركيب التلقائي
من الواضح أنه مع عدم وجود ديسيبل ، لا تعمل أعمدة التركيب التلقائي تلقائيًا ، ولكن إذا كنت تستخدم INTs البسيطة أو الطول لجميع أعمدة الهوية ، فإن هذا الإصلاح يعمل بشكل جيد:
(هذه نسخة من هنا, ، مدرجة للاكتمال)
في ActivereCord.tt:
1: في الجزء العلوي من وظيفة الفراغ العام إضافة (مزود Idataprovider) {
public void Add(IDataProvider provider){
<#if(tbl.PK.SysType=="long" || tbl.PK.SysType=="int") {#>
if (TestMode)
{
this.<#=tbl.PK.CleanName#>=++next_test_autoid;
}
<#}#>
2: تحت خط testmode bool testmode = خطأ ، أضف:
public bool TestMode = false;
<#if(tbl.PK.SysType=="long" || tbl.PK.SysType=="int") {#>
private static <#=tbl.PK.SysType#> next_test_autoid = 0;
<#}#>
تم كسر مقارنة المساواة في الكائن
باستخدام قالب ActivereCord الافتراضي ، لا تعمل مساواة الكائن. لذا فإن إزالة العناصر من DB لا تعمل لأن القائمة <>. إزالة () المستخدمة في TestRepository فشل في مطابقة العنصر الذي يتم إزالته. يمكن إصلاح هذا في قوالب TT بما يلي: (أي: استبدال "==" مع "equals ()")
في ActivereCord.tt:
public override bool Equals(object obj){
if(obj.GetType()==typeof(<#=tbl.ClassName#>)){
<#=tbl.ClassName#> compare=(<#=tbl.ClassName#>)obj;
return compare.KeyValue().Equals(this.KeyValue());
}else{
return base.Equals(obj);
}
}
لم يتم تنفيذ Deletemany في مستودع الاختبار
عمليات مثل هذا records.Delete(x => x.whatever == whatever)
فشل ضد اختبار إعادة اختبار لأنه لم يتم تنفيذ deletemany. يتطلب إصلاح هذا الحصول على المصدر وبناء نفسك ، ولكن إليك تطبيق يبدو أنه يعمل:
في testrepository.cs:
public int DeleteMany(Expression<Func<T, bool>> expression)
{
foreach (var x in _items.AsQueryable().Where(expression).ToList())
{
_items.Remove(x);
}
return 0;
}
المحلول
شكرًا على هذا - لكن أفضل شيء يجب فعله هو إخبارنا عن مشكلاتك :). يعد Stackoverflow أكثر للإجابة على الأسئلة - قد أقترح التوجه إلى Github والتحقق من أحدث مصدر (لقد إصلاح عدد من هذه). إذا رأيت أنه يمكن إصلاح بعض الأشياء - فإن البقع مرحب بها للغاية.
نصائح أخرى
بالنسبة للنقطة 2 ، لا يزال هذا مكسورًا إذا لم يتم حفظ السجل بعد ، حيث إنه يقارن عن KeyValue (). لضمان أن السجلات غير المحفورة لها أيضًا مساواة حقيقية ، يجب علينا أيضًا اختبار ما إذا