web-dev-qa-db-fra.com

Vous testez un service Web WCF?

Je voulais créer une classe de test pour un service WCF. Je crois que "moqueur" est le bon terme pour cela?

Je ne suis pas vraiment sûr que la façon dont je pense que je dois le faire soit la bonne. On m'a donné une URL vers un service WCF, par exemple:

http:://somesite.com/wcf/RealService.svc

Et:

http:://somesite.com/wcf/RealService.svc?wsdl

Ainsi, au lieu d'ajouter réellement le RealService.svc À mon projet en tant que Service Reference, J'ai simplement ajouté un nouveau WCF Service À mon projet appelé Service1.

Je veux ensuite utiliser l'outil wsdl.exe (Ou peut-être le svcutil.exe?) Pour générer une interface à partir de l'URL WSDL: http:://somesite.com/wcf/RealService.svc?wsdl.

J'ouvre ensuite le fichier Service1.cs Et au lieu de laisser hériter de IService1.cs Je le laisse hériter du interface généré.

Ensuite, au lieu d'appeler le vrai service dans mon application, j'appelle simplement ma classe Service1. Est-ce ainsi que se moque un service web ..?

Vous devez également comprendre comment générer réellement un interface avec l'outil svcutil (j'ai lu que je ne peux pas utiliser wsdl.exe pour un service WCF?). Donc, tous les conseils à ce sujet sont également les bienvenus!

24
w00

De nombreux domaines à aborder tenteront de vous orienter dans la bonne direction:

  • Si vous souhaitez tester (c.-à-d. Réussir l'entrée, vérifier la sortie) votre service WCF, utilisez l'outil GUI de Visual Studio WCF Test Client (Article MSDN ici ).

  • Si vous voulez vous moquer de votre service WCF (c'est-à-dire tester unitaire votre composant qui consomme le service WCF), utilisez un cadre de simulation comme NMock2 qui vous permet de simuler l'interface de service (connexe SO thread ici ). Vous pouvez également coder manuellement une maquette (en implémentant l'interface), si vous ne veulent pas utiliser un cadre externe - mais c'est plus compliqué.

  • Si vous souhaitez tester un service WCF (c.-à-d. Écrire des tests unitaires pour le service, l'entreprise, les données, etc.), utilisez un cadre de simulation populaire (connexe SO thread ici =).

  • Pour générer un proxy pour votre service WCF, utilisez l'utilitaire de ligne de commande svcutil.exe (article MSDN ici ) comme vous l'avez deviné. Cet utilitaire est livré avec diverses options (langue, espace de noms, fichier de configuration, etc.), alors faites attention à elles.

J'espère que cela t'aides.

20
Channs

Vous pouvez générer votre proxy à l'aide de svcutil.exe (de Visula Studio: Ajouter une référence de service ...). Cela va générer votre proxy client et un Interface de service.

Par exemple pour votre service http :: //somesite.com/wcf/RealService.svc? Wsdl nous obtiendrons:

  • IRealService (interface)
  • RealServiceClient (implémente IRealService et étend System.ServiceModel.ClientBase)

Vous pouvez créer une classe fictive qui implémente votre interface de service (IRealService).

Et dans votre application au lieu d'instancier le client de service concret (RealServiceClient) lorsque vous souhaitez appeler votre service, vous pouvez utiliser une usine ou un conteneur IOC.

De cette façon, vous pouvez décider avec quelle instance votre application (ou modules/composants) fonctionne: un service réel à l'exécution, une maquette lors des tests.

3
polkduran