Como posso zombar de uma interface interna usando NMOCK2?
-
25-09-2019 - |
Pergunta
Se eu tentar isso, apenas recebo uma exceção:
System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.
Tornar a interface pública não é uma solução aceitável. Não quero mudar a visibilidade da minha API para testá -la.
Solução 2
Eu encontrei a resposta para isso:
NMOCK2, (e outras estruturas de zombaria). Criará os objetos simulados em conjuntos gerados dinamicamente. Para que a estrutura de zombaria crie o objeto simulado, os internos devem ser visíveis para esses conjuntos.
Basta adicionar as seguintes declarações à classe AssemblyInfo.cs para o módulo em teste:
// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]
Outras dicas
Encontrou e documentou a solução.
http://www.rhyous.com/2012/05/03/nmock2-internal-interface/
Acontece que a versão mais recente do NMOCK2 (peguei aqui: Projeto NMOCK2) só precisa de um e é diferente.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow