قائمة موك (موك) التحف - أفضل الممارسات / التبسيط
-
07-07-2019 - |
سؤال
والنظر في المسائل التالية:
new SUT(null, null, new List<IObjectBeingMocked>() { mockObjectOne.Object, mockObjectTwo.Object })
وبلدي SUT (النظام تحت الاختبار) يحتاج إلى قائمة الكائنات كمعلمة الثالث. هذه تحتاج إلى أن تكون يسخر ولقد وضع بعض expectatioins على هذه.
وكيف لي أن مسحها يصل لدرجة أنني يمكن أن يزيل الحاجة إلى استدعاء .Object
على كل عنصر في القائمة؟ هناك اثنين فقط من البنود عادة ولكن هذا يمكن أن تنمو وفي رأيي هذا يجعل الاختبار الصعب قراءتها.
وماذا سيكون أفضل وسيلة لتحويل هذه القائمة من كائنات وهمية في الكائنات الفعلية بسهولة / لطيف؟
المحلول
ويمكنك استخدام طريقة Mocks.Query () الذي سيعود جمع كل الحالات SUT سخر.
وجود هذه الميزة في الإصدار بيتا من موك. الاطلاع على تفاصيل هنا :
نصائح أخرى
وربما يمكنك استخدام طرق الإرشاد لإدارة إنشاء قائمة والاحتجاج خاصية كائن بالنسبة لك.
var list = new List<Mock<Foo>>() { ... };
new SUT( null, null, list.Select( o => o.Object ).ToList() );
وهناك طريقة جيدة للتعامل مع هذا هو لخلق طريقة GetSUT () أن يخلق مرة واحدة فقط في مكان واحد. بعد ذلك تغييرات خلق SUT، لديك فقط لتغييره في مكان واحد.
تقديم شرح المتغيرات (والسكان المحليين) من أجل الوضوح:
IObjectBeingMocked objectOne = mockObjectOne.Object;
IObjectBeingMocked objectTwo = mockObjectTwo.Object;
new SUT(null, null, new List<IObjectBeingMocked>() { objectOne, objectTwo });
وتحرير: ربما مع أسماء اختيار أفضل من بلادي "objectOne"، "objectTwo". ؛)