Moq questão multi-Interface
-
08-07-2019 - |
Pergunta
Esta pode ou não ser um problema multi-interface, mas eu estou fazendo algo parecido com isto:
var mockInterface1 = new Mock<IInterface1>();
var mockInterface2 = mockInterface1.As<IInterface2>();
mockInterface1.Expect( foo => foo.Foo(It.IsAny<IInterface3>() ) );
...
otherObject.DoSomething( (IInterface1)mockInterface2.Object );
Na linha de DoSomething em tempo de execução eu recebo:
MyTest (TestFixtureSetUp): System.Reflection.TargetInvocationException:. Exceção foi acionada pelo destino de uma invocação
----> System.TypeInitializationException:. O inicializador de tipo para 'IInterface1Proxy184f83d417624e05b450fa40c2c5d35c' emitiu uma exceção
----> System.BadImageFormatException: Foi feita uma tentativa de carregar um programa com um formato incorreto. (Exceção de HRESULT: 0x8007000B)
Será que isso tem algo a ver com a minha não ter o direito de esperar de código, ou é relacionado com as múltiplas interfaces no meu simulada, ou algo mais?
Solução
Eu encontrei este link: Castelo Projeto Tópico
o que parece indicar que é um problema em DynamicProxy do Castelo, que é usado por Moq (e RhinoMocks).
Outras dicas
Eu sei que isto não é uma resposta como tal, mas soa como um bug no MOQ. Qual versão você está usando? Eu apenas tentei o seu exemplo, com 2.6 (2.6.1014.1) e eu não recebo uma exceção.