2010-08-09 14 views
5

J'ai une bibliothèque COM que je dois référencer dans mon application et j'essaye de se moquer de ses interfaces.Mocking COM Interfaces utilisant Rhino Mocks

Je reçois des exceptions quand je fais ce MockRepository.GenerateMock<IAmAComInterface>();

Je ne reçois pas d'exceptions quand je fais ceci: MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>(); mais aucun de mes attentes sont vérifiais.

Est-ce que je fais quelque chose de mal?

Pour l'instant, j'ai un tas de wrappers pour toutes mes interfaces COM et je me moque d'eux, mais je voudrais vraiment ne pas avoir à tout emballer.

EDIT:
Exceptions avec GenerateMock:
System.TypeLoadException

Avec le message 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.

Lorsque vous utilisez l'échec de test GenerateDynamicMockWithRemoting dit toujours attendu: 1 réelles: 0 pour toutes les attentes sur le COM interface.

Utilisation de Rhino.Mocks 3.6.

+1

Quelles exceptions? –

+0

@Wim Coenen Edité pour inclure des exceptions et plus de détails. – Adam

+0

Ces interfaces COM sont-elles créées dans .NET et conçues pour l'exportation vers COM? Ou sont-ils des objets COM avec des bibliothèques de type .NET générées (via tlbimp)? – PatrickSteele

Répondre

13

Cela ressemble à un problème avec "Type Equivalence" de .NET 4.0. Voir ce pour plus de détails: http://code.google.com/p/moq/issues/detail?id=254

Le correctif (comme indiqué ci-dessus) est facile en ajoutant:

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

Pour votre test unitaire.

+2

Fonctionne aussi pour Moq. –

+0

Impossible pour moi de l'appeler en raison de cette erreur (ou similaire): Castle.DynamicProxy.Generators.AttributesToAvoidReplicating 'existe à la fois dans' Castle.Core.dll 'et' ... Rhino.Mocks.dll ' – PandaWood

+0

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