Come posso deridere un'interfaccia interna utilizzando NMock2?
-
25-09-2019 - |
Domanda
Se provo questo, ottengo solo un'eccezione:
System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.
Rendere il pubblico interfaccia non è una soluzione accettabile. Io non voglio cambiare il visiblity del mio API al fine di testarlo.
Soluzione 2
Ho trovato la risposta a questa:
NMock2, (e altri framework beffardi). Creerà gli oggetti mock in assembly generati in modo dinamico. Affinché il quadro di scherno per creare l'oggetto fittizio, gli interni devono essere visibili a questi gruppi.
Basta aggiungere le seguenti dichiarazioni alla classe AssemblyInfo.cs per il modulo in prova:
// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]
Altri suggerimenti
Trovato e documentata la soluzione.
http://www.rhyous.com/2012/05 / 03 / nmock2-interno-interfaccia /
Si scopre che la versione più recente di NMock2 (ho ottenuto qui: NMock2 progetto ) solo le esigenze uno ed è diverso.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]