2010-08-09 15 views
5

Ho una libreria COM che devo fare riferimento nella mia app e sto provando a prendere in giro le sue interfacce.Mocking delle interfacce COM usando Rhino Mocks

io sono sempre eccezioni quando sto facendo questo MockRepository.GenerateMock<IAmAComInterface>();

non ottengo eccezioni quando faccio questo: MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>(); ma nessuno dei mie aspettative sta verificando.

Sto facendo qualcosa di sbagliato?

Per ora, ho un sacco di wrapper per tutte le mie interfacce COM e li sto prendendo in giro, ma vorrei davvero non dover avvolgere tutto.

EDIT:
Eccezioni con GenerateMock:
System.TypeLoadException

Con il messaggio di:
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.

Quando si utilizza fallimento del test GenerateDynamicMockWithRemoting dice sempre atteso: 1 attuali: 0 per qualsiasi aspettativa sul COM interfaccia.

Utilizzo di Rhino.Mocks 3.6.

+1

Quali eccezioni? –

+0

@Wim Coenen Modificato per includere eccezioni e ulteriori dettagli. – Adam

+0

Queste interfacce COM sono state create in .NET e progettate per l'esportazione in COM? Oppure sono oggetti COM con librerie di tipi .NET generati (tramite tlbimp)? – PatrickSteele

risposta

13

Sembra che questo sia un problema con "Type Equivalence" di .NET 4.0. Vedere questo per maggiori dettagli: http://code.google.com/p/moq/issues/detail?id=254

La correzione (come illustrato qui sopra) è facile con l'aggiunta di:

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

Per il tuo test di unità.

+2

Anche per Moq. –

+0

Impossibile chiamarlo a causa di questo (o simile) errore: Castle.DynamicProxy.Generators.AttributesToAvoidReplicating 'esiste in entrambi' ... Castle.Core.dll 'e' ... Rhino.Mocks.dll ' – PandaWood

+0

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