سؤال

لقد كنت أحاول استخدام دعم مستودع اختبار 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 (). لضمان أن السجلات غير المحفورة لها أيضًا مساواة حقيقية ، يجب علينا أيضًا اختبار ما إذا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top