2009-10-14 9 views
4

Nous essayons d'utiliser PostSharp, plus précisément OnMethodInvocationAspect, pour intercepter les méthodes d'une classe.Comment utiliser PostSharp avec MOQ?

Le code fonctionne bien, mais lorsque vous le testez avec MOQ, il semble que je me moque de mes mocks. Si je supprime les aspects, tous les tests aboutissent. Mais, si je retourne les aspects, les attentes sur les moqueurs MOQ ne sont pas satisfaites.

Voici un extrait tiré d'un de nos tests unitaires:

this.sgtrMock.Setup(r => r.RetrieveCurrentTaxes()).Returns(new[] {tax1, tax2}); 
this.service.LoadServiceTaxes(); 
this.sgtrMock.Verify(r => r.RetrieveCurrentTaxes(), Times.Once()); 

Toutes les idées sur ce qui peut se produire?

+1

Pouvez-vous poster du code de votre aspect? Il y a un piège - les objets Moq ne sont pas les objets interceptés, ce sont des proxies. –

+0

Hey Karel, désolé pour le long délai de réponse ... nous avons eu ce problème il y a un certain temps et c'est juste une impraticabilité technique. Tout comme vous l'avez dit, MOQ crée des proxies qui finissent par contourner les aspects de PostSharp ... Nous avons fini par refactoriser la classe pour ne pas inclure l'aspect et l'a déplacé ailleurs (où nous n'avions pas besoin de se moquer des attentes). –

+0

Pas de problème, j'ai posté mon commentaire en réponse. S'il vous plaît, fermez cette question en la marquant, merci. –

Répondre

1

Il y a un piège - les objets Moq ne sont pas des objets interceptés, ce sont des proxies.