¿Cómo puedo burlarse de una interfaz interna usando NMock2?
-
25-09-2019 - |
Pregunta
Si intento esto, acabo de recibir una excepción:
System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.
Hacer público interfaz no es una solución aceptable. Yo no quiero para cambiar la visibilidad de mi API con el fin de probarlo.
Solución 2
He encontrado la respuesta a esto:
NMock2, (y otros marcos burlones). Creará los objetos simulados en asambleas generados dinámicamente. Para que el marco de burla para crear el objeto simulado, las partes internas deben ser visibles a estos conjuntos.
Sólo tiene que añadir las siguientes declaraciones a la clase AssemblyInfo.cs para la Prueba de Bajo Módulo:
// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]
Otros consejos
encontrado y documentado la solución.
http://www.rhyous.com/2012/05 / 03 / nmock2-internal-interfaz /
Resulta que la versión más reciente de NMock2 (lo tengo aquí: NMock2 Proyecto ) sólo las necesidades uno y es diferente.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]