سؤال

أنا وحدة اختبار فئة تدعو

ContextRegistry.GetContext().GetObject("ISomething")

ولا بأس إذا لم يتم تعريف Isomething.لذلك أحاول اختباره في كلا الاتجاهين.نظرًا لأن هذا التعريف يأتي عادةً من ملف app.config ولا أرغب في تحرير هذا الملف بين الاختبارات، فأنا أستخدم [TestFixtureSetUp] و[TestFixtureTearDown] لتسجيل المفردة والاختبار، ثم أرغب في " قم بإلغاء تسجيله.هذا يسجله على ما يرام:

...ObjectFactory.RegisterSingleton("ISomething", new SomethingMOCK());

ويمكنني التحقق لمعرفة ما إذا كان هناك:

if (...ObjectFactory.ContainsSingleton("ISomething"))

لكن يبدو أنني لا أستطيع إزالة المفردة التي قمت بتسجيلها.حاولت استخدام فارغة:

...ObjectFactory.RegisterSingleton("ISomething", null);

ولكن هذا يلقي.هل هناك طريقة أفضل؟

هل كانت مفيدة؟

المحلول

وبقدر ما أعرف، لا توجد مثل هذه الميزة. فإنه يمكن أن تكون خادعة، على أي حال. ما ينبغي أن يكون دلالات إذا تم السلكية المفرد على كائنات أخرى بالفعل، قبل أن يتم إزالته في نهاية المطاف؟ إعادة تعيين خصائص الكائن فارغة قد لا تكون ممكنة كما كنت لا يمكن أن نفترض أن يسمح لاغية لالممتلكات المتضررة. إذا تم السلكية الكائن عن طريق الحقن منشئ، قد لا حتى يكون هناك طريقة واضعة.

نصائح أخرى

وبصرف النظر أنه يمكنك دائما مثيل سياق التطبيق الخاص بك باستخدام XmlApplicationContext الجديدة ( "التجمع: // myconfigresource")، قد تحتاج أيضا إلى التحقق من دعم وحدة اختبار Spring.NET لهذا. يحتوي documenation إشارة فصل مخصص: HTTP: //www.springframework. صافي / DOC-احدث / إشارة / أتش تي أم أل / testing.html

وهته، إريك

كما ذكر سلفا:لا يمكن ذلك خارج الصندوق، ولكن يمكنك القيام بذلك بسهولة عبر الكود دون لمس Spring.net.ما عليك سوى استخدام نمط الوكيل والسماح بإزالة/تحديث هدف المفوض، على سبيل المثال.من خلال خاصية get/set البسيطة.كل ما تحتاجه هو طريقة للحصول على الكائن الذي تم إنشاؤه في حاوية IoC الخاصة بك.

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