2009-11-19 4 views
2

Cela me dérange depuis un certain temps maintenant. Je mets toute ma validation dans une couche de service. Cependant, quand je fais un test unitaire, je passe généralement tout par la méthode d'action. Ensuite, cela va dans ma couche de service ce qui contient la validation.Où devriez-vous tester votre validation?

Donc, je ne suis pas sûr maintenant si c'est la meilleure façon de le faire. Depuis généralement, ils disent que vous devriez juste tester cette méthode.

Alors, qu'en pensez-vous?

Répondre

3

Si vous passez tout à travers votre demande d'action, il semble que vous fassiez des tests d'intégration.

Si vous effectuez des tests (unitaires), vous devez tester les unités. Dans ce cas, vous devez transmettre toutes les données nécessaires à votre couche de service pour simuler la requête d'action.

Vous devez simuler l'objet qui est passé à la couche de service, le transmettre et ensuite Affirmer les résultats attendus par rapport à ce que vous avez réellement récupéré.

EDIT

Tout comme un ajout, il est bon d'avoir la fin à la fin ou l'intégration, les tests, car elle prouve que le (processus) fonctionne.

Cependant, vous devez avoir les tests unitaires car ils vont tester les composants individuels et vous mettront à zéro sur les défauts plus rapidement que les tests de bout en bout peuvent ou ne le feront.

+0

Alors, ne devrais-je pas tester la vue? Comme ce que j'ai est un fondamentalement une méthode qui s'appellerait Create() dans une instruction if cela ferait la validation et créer quelque chose puis retournerait vrai. Ensuite, je retourne juste quelque chose. Donc, y aurait-il quelque chose à tester dans la vue alors? Comme si je supposais que je mockerais cette méthode de création alors puisque je ne la teste pas. donc vraiment c'est juste une instruction if qui renvoie quelque chose sur true. – chobo2

+0

Dans ce cas, je ne serais probablement pas la peine de tester la vue. Le TDD est quelque chose que vous devez concevoir vous-même afin qu'il corresponde le mieux à votre application. Il n'y a pas de formule 1 pour toutes les applications. Décidez de ce dont vous avez besoin pour écrire des tests afin que vous puissiez à tout moment les exécuter et identifier les problèmes liés aux changements de code ailleurs dans votre application. www.dnrtv.com a un grand spectacle de Venkat sur TDD. Je recommande fortement de le regarder. – griegs

1

Si j'étais vous, je testerais la couche de service - qui contient la validation --- séparément au lieu de via la méthode d'action.

La raison en est que je veux garder mon code de test "fait un test à la fois". J'ai des tests pour mes contrôleurs qui testent spécifiquement l'interaction du modèle et de la vue et pas autre chose; et je voudrais avoir des tests spécifiques pour la couche de service et pour la validation.

Lorsque vous effectuez un test unitaire, mocks sont simplement inévitables.

+0

+1. Oui, il y a des arguments en faveur des tests d'intégration, mais bien avant d'y arriver, je pense que vous devez faire des tests unitaires. Ainsi, si vous effectuez un changement n'importe où, il est récupéré plus rapidement que lors des tests d'intégration. – griegs

Questions connexes