2010-04-20 3 views
2

Je sais que je n'aurais pas besoin de cela avec Typemock, cependant, avec quelque chose comme MoQ, j'ai besoin d'utiliser le modèle d'adaptateur pour permettre la création de mocks via des interfaces pour le code que je ne contrôle pas. Par exemple, TcpClient est une classe .NET, donc j'utilise un modèle d'adaptateur pour activer le mocking de cet objet, b/c j'ai besoin d'une interface de cette classe. Je produis ensuite l'interface ITcpClient, qui peut ensuite être implémentée via une classe TcpClientAdapter, qui est simplement une implémentation de modèle d'adaptateur simple.Outil de génération de code, pour créer des classes d'adaptateur C# pour les tests unitaires?

Je cherche un outil pour le faire automatiquement (création d'interface et d'adaptateur), je pense qu'il y en a un là-bas quelque part? (Ou tout le monde est juste à la main de codage de ces)

+0

Comment comptez-vous obtenir TcpClient pour implémenter votre interface? –

+0

@Lasse - indiqué dans ma question, en utilisant le modèle d'adaptateur. Voir ici pour plus d'informations: http://www.dofactory.com/Patterns/PatternAdapter.aspx – RyBolt

Répondre

2

"Remplacer toute méthode .NET avec votre propre délégué" - taupes

Je mine de code main mais vérifiez sur Moles. Il vous permettra de se moquer de n'importe quoi, méthodes statiques, vous l'appelez. Cependant, ce n'est pas un générateur de code, vous devrez écrire les valeurs de code/return par exemple, mais vous n'aurez pas besoin d'écrire des classes d'adaptateurs. Au lieu de cela, vous indiquez simplement ce que vous voulez remplacer par test.

C'est nouveau et je ne l'ai pas personnellement utilisé, mais d'après les vidéos que j'ai vues, cela semble prometteur. Spécialement pour les zones problématiques telles que les API statiques ou les classes hors de votre contrôle.

+0

Ceci est certainement une bonne alternative à Typemock, car ils semblent tous deux avoir les mêmes objectifs, l'isolement. Les projets de recherche sur la SP m'ont donné l'occasion de tirer des cheveux, mais je vais essayer de le faire fonctionner. – RyBolt

Questions connexes