2010-03-18 6 views
7

Je n'ai jamais aimé écrire de faux-pas et il y a quelque temps, quelqu'un a recommandé d'utiliser FakeWeb. Je suis immédiatement tombé complètement amoureux de FakeWeb. Cependant, je me demande s'il y a un inconvénient à utiliser FakeWeb. Il semble que les simulacres sont encore beaucoup plus communs, donc je me demande ce qui me manque c'est faux d'utiliser FakeWeb à la place. Y a-t-il un certain type d'erreur que vous ne pouvez pas couvrir avec Fakeweb ou est-ce quelque chose à propos du processus TDD ou BDD?Les inconvénients de l'utilisation de FakeWeb par rapport à l'écriture de faux-semblants pour les tests

Répondre

8

Vous devriez jeter un oeil à WebMock http://github.com/bblimke/webmock

L'inconvénient de se moquant des requêtes http est le manque de protection contre les modifications de l'API à distance. Si le service HTTP distant change, et que votre code ne sera plus compatible, vos tests ne vous en informeront pas. Si vous vous moquez des méthodes client http, vous avez les mêmes problèmes. Il est bon d'avoir une suite de tests d'intégration qui vérifie que votre code peut encore parler au vrai service http. L'avantage de la bibliothèque comme FakeWeb ou WebMock est que vous pouvez vous concentrer sur l'implémentation du comportement au lieu de vous soucier des détails d'implémentation de la bibliothèque cliente http spécifique. Même si vous changez de bibliothèque de Net :: HTTP à RestClient par exemple, le comportement doit toujours être préservé pour que les tests soient toujours réussis. Si vous vous moquez du client http par vous-même, vous devez modifier les tests lorsque vous modifiez l'implémentation, même si le comportement n'a pas changé. L'utilisation de FakeWeb ou Webmock aide également avec TDD ou BDD (test en premier). Vous pouvez spécifier le comportement http avec des spécifications ou des tests, avant de vous soucier des détails d'implémentation d'un client http spécifique.

19

Vous serez probablement heureux avec VCR, qui est un wrapper autour des bibliothèques de moqueurs HTTP. Il met en cache les requêtes HTTP d'origine, afin que vos tests soient rapides et fonctionnent hors ligne, mais peut également être modifié pour exécuter à nouveau la demande d'origine, pour voir si le test fonctionne avec l'API distante.

https://github.com/myronmarston/vcr

Questions connexes