2010-08-09 28 views
5

Tengo una biblioteca COM a la que tengo que hacer referencia en mi aplicación y estoy tratando de burlar sus interfaces.Mocking COM Interfaces usando Rhino Mocks

Me estoy haciendo excepciones cuando estoy haciendo esto MockRepository.GenerateMock<IAmAComInterface>();

no consigo excepciones cuando hago esto: MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>(); pero ninguno de mis expectativas están verificando.

¿Estoy haciendo algo mal?

Por ahora, tengo un montón de envoltorios para todas mis interfaces COM y me estoy burlando de ellos, pero realmente me gustaría no tener que envolver todo.

EDIT:
excepciones con GenerateMock:
System.TypeLoadException

Con el mensaje de:
The type is marked as eligible for type equivalence, but either it has generic parameters, or it is not a structure, COM imported interface, enumeration, or delegate.

Al utilizar falla en la prueba GenerateDynamicMockWithRemoting siempre dice esperado: 1 reales: 0 para cualquier expectativas en el COM interfaz.

Usando Rhino.Mocks 3.6.

+1

las excepciones? –

+0

@Wim Coenen Editado para incluir excepciones y más detalles. – Adam

+0

¿Están estas interfaces COM creadas en .NET y diseñadas para exportar a COM? ¿O son objetos COM con bibliotecas de tipo .NET generadas (a través de tlbimp)? – PatrickSteele

Respuesta

13

Parece que esto es un problema con "Tipo Equivalencia" de .NET 4.0. Ver esto para más detalles: http://code.google.com/p/moq/issues/detail?id=254

La solución (como se señaló anteriormente) es fácil añadiendo:

Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof (TypeIdentifierAttribute)); 

Para la prueba de unidad.

+2

Funciona también para Moq. –

+0

Imposible llamarlo debido a este error (o similar): Castle.DynamicProxy.Generators.AttributesToAvoidReplicating 'existe en ambos' ... Castle.Core.dll 'y' ... Rhino.Mocks.dll ' – PandaWood

+0

@ PandaWood - Ver: http://stackoverflow.com/questions/8095221/how-to-resolve-castle-windsor-and-moq-version-conflicts-for-castle-core-assembly – PatrickSteele

Cuestiones relacionadas