Question

Quelle serait la bonne façon de tester l'unité une action de contrôleur qui effectue une redirection?

Mise à jour: Je suis un développeur de base sur le projet CFWheels. La seule raison pour laquelle je pose cette question est actuellement je travaille sur l'amélioration de la construction dans le cadre de tests que nous avons et je me demande sur la façon d'aborder et mettre en œuvre quelque chose comme ça dans CFWheels pour le rendre plus facile pour les développeurs de tester leur application .

Mise à jour: je me suis dit comment tester. il semble que nous allons devoir réécrire le contrôleur de roues internes un peu pour effectuer la redirection après l'action est terminée et après est transmis de nouveau au répartiteur. la seule chose avec cette approche est que tout code après la RedirectTo () serait couru SAUF si vous prenez les précautions appropriées avant la main; cela inclut soit mettre un retour après la déclaration RedirectTo () ou de mettre des contrôles conditionnels dans votre action pour isoler le code RedirectTo () d'un autre code. Il consiste également à faire en sorte que rien d'autre est rendu une fois RedirectTo () est réalisée.

Était-ce utile?

La solution

Des trucs comme cela devient beaucoup plus facile à tester si vous séparez le mécanisme de redirection dans de multiples fonctions: a) une fonction qui détermine l'URL cible et b) une fonction qui effectue la redirection

.

De cette façon, vous pouvez tester fonctionn très facilement, et fonctionn est celui que vous voulez tester de toute façon. Il est le code a écrit. Il est où votre logique réelle est. FunctionB est pas votre code; il est tripes ColdFusion, et il n'y a pas beaucoup de sens dans les tests cflocation.

Si vous êtes en mission pour atteindre une couverture de test de 100%, alors vous pourriez passer 10 tests pour fonctionn où vous exercez toutes les différentes branches de votre logique, puis un test pour functionB qui exerce le redirect de la manière Terry suggère; donc de cette manière, vous obtenez seulement 1 essai lent au lieu de 10.

Vous pouvez généraliser cette approche pour des utilisations dans d'autres scénarios: systèmes de fichiers, webservices, http, ftp, email, etc: « Extraire les choses que vous pouvez contrôler et que vous voulez tester à partir des choses que vous ne pouvez pas contrôler et ne pas veulent tester "

Autres conseils

Vous pouvez appeler le contrôleur avec l'URL appropriée à l'aide cfhttp avec redirect défini sur false. Ensuite, testez le struct résultat cfhttp résultant, il devrait avoir les informations sur l'endroit où la redirection prendriez-vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top