2009-02-17 4 views
4

Dans un projet à venir, je vais écrire une application en C# qui doit en partie communiquer avec un serveur HTTP. Je suis très friand d'écrire mon code TDD-style, et je voudrais juste le faire si je pouvais me moquer de toutes les demandes HTTP dans mes tests.Cadre de client HTTP facilement simulable pour C#

Est-ce que quelqu'un ici connaît un cadre de client HTTP facettable facile?

Ps. J'utilise habituellement Moq pour les simulacres. Si vous connaissez un cadre de moquerie libre qui serait mieux de se moquer des requêtes HTTP, ce serait bien aussi.

Répondre

6

DotNetOpenId, un projet open source à partir de laquelle vous pouvez réutiliser le code, utilise des classes wrapper HTTP à travers lequel tous les appels sont faits. Pendant le test, un gestionnaire HTTP fictif est injecté afin que les réponses puissent être définies par programme avant que l'appel soit effectué. Il a un autre mode où il héberge son propre site ASP.NET afin que la pile réelle complète puisse être exercée.

Cela fonctionne bien, bien qu'il n'ait pas été retiré en tant que solution autonome. Si vous souhaitez le réutiliser, voici quelques liens pertinents vers la source. Et vous pouvez demander de l'aide pour l'intégrer à [email protected]

en direct un: StandardWebRequestHandler.cs

Mocks: MockHttpRequest.cs, TestWebRequestHandler.cs

+0

Merci! Très utile! – theringostarrs

0

Je ne pense pas qu'il existe réellement un framework qui gère les choses que vous voulez archiver. Après tout, vous seul savez ce que chaque requête Http devrait faire. Donc, fondamentalement, vous avez 2 options:

  1. Faire les appels et utiliser une implémentation fictive de l'autre côté. Cela peut être une simple application console qui renvoie des données factices. Si vous avez besoin de plus de logique, je considérerais utiliser une base de données d'objets - à mon avis, ils correspondent parfaitement à ces applications.
  2. Utilisez une implémentation simulée du côté de l'application. Si cette implémentation a beaucoup de logique, n'utilisez aucun framework de simulation - créez une classe de simulation personnalisée qui a toute la logique.

Hope this helps

4

Je vous suggère d'utiliser le support de cadre pour ce savoir System.Net.WebRequest.

Définir une interface très simple, et un emballage simple pour le webrequest. De cette façon, vous obtiendrez ce que vous voulez, et n'ajoutera pas de dépendance externe pour quelque chose que le framework fait déjà bien.

1

Vous pouvez utiliser WireMock.Net qui est une bibliothèque flexible pour le remplacement et le moquettage des réponses HTTP Web en utilisant des requêtes correspondant aux critères.

Et cela peut également être utilisé très facilement dans des projets unitaires. Vérifiez le wiki pour plus de détails.

NuGet est trouvé here.