كيف يمكنني السخرية من واجهة داخلية باستخدام NMock2؟
-
25-09-2019 - |
سؤال
إذا حاولت هذا ، أحصل على استثناء فقط:
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")]
لا تنتمي إلى StackOverflow