سؤال

إذا حاولت هذا ، أحصل على استثناء فقط:

System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.

جعل الواجهة العامة ليس حلاً مقبولًا. لا أرغب في تغيير رعاية واجهة برمجة التطبيقات الخاصة بي من أجل اختبارها.

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

المحلول 2

لقد وجدت الجواب على هذا:

NMock2 ، (وغيرها من الأطر السخرية). سيقوم بإنشاء الكائنات الوهمية في التجميعات التي تم إنشاؤها ديناميكيًا. من أجل إنشاء إطار السخرية لإنشاء كائن وهمية ، يجب أن تكون الأجزاء الداخلية مرئية لهذه التجميعات.

فقط أضف الإعلانات التالية إلى فئة AssemblyInfo.cs للوحدة الخاضعة للاختبار:

// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]

نصائح أخرى

وجدت وتوثيق الحل.

http://www.rhyous.com/2012/05/03/nmock2-internal-interface/

تبين أن الإصدار الأحدث من NMock2 (حصلت عليه هنا: مشروع NMock2) يحتاج فقط واحد وهو مختلف.

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top