قائمة موك (موك) التحف - أفضل الممارسات / التبسيط

StackOverflow https://stackoverflow.com/questions/1429793

  •  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". ؛)

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