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.

Foi útil?

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
scroll top