2010-05-18 22 views
4

Je suis en train de tester les fonctionnalités d'authentification de mon site. Zend_Auth utilise comme moteur d'autorisation. Mais le statut d'authentification reste entre les tests et je dois écrire 'logout' dans chaque tearDown.Isoler Zend_Session dans les tests PHPUnit

Maintenant tout va bien. Mais le problème est le suivant. Comme je sais, Zend_Auth utilise Zend_Session pour stocker les données d'authentification. Donc, la session est commune à tous les tests. J'ai peur qu'à l'avenir cela puisse causer des problèmes.

Pouvez-vous me dire quelle est la meilleure pratique pour faire des sessions pour chaque test isolé? Maintenant, je ne peux m'imaginer que commencer manuellement la session dans setUp et arrêter dans tearDown. Mais j'ai beaucoup de tests et mettre en place cela peut prendre beaucoup de temps.

Répondre

1

PHPUnit vous permet de define a shared fixture (une configuration courante) pour une suite de tests complète. Cependant, cette solution ne fait que masquer une faille dans la conception des tests, puisqu'elle ne répond pas à leur dépendance vis-à-vis d'un état global commun. Une meilleure solution est de use test doubles, en créant des stubs personnalisés de certaines classes pour contrôler le comportement des parties choisies du système.

Dans ce cas, vous pouvez essayer de créer un talon de Zend_Auth afin qu'il ignore l'utilisation de Zend_Session et renvoie les autorisations souhaitées pour chaque test unitaire.

+0

Mais dans les deux cas, j'ai encore besoin de faire des changements dans tous mes tests existants. Et je cherche un moyen de ne pas le faire. Si c'est possible. – darja

+0

La question était: Pouvez-vous me dire quelle est la meilleure pratique pour faire des sessions pour chaque test isolé? Eh bien, ce sont quelques options. D'autre part, l'implémentation d'un appareil partagé ne nécessite pas vraiment de nombreux changements, il suffit de créer une suite de tests pour tous les tests nécessitant une authentification de session et de déplacer les appareils des tests vers un commun dans la suite. Il existe encore une autre option, qui consiste à créer un simulacre de Zend_Auth à des fins de test uniquement. Alors c'est juste une question de trouver et de remplacer. – nuqqsa

+0

Salut, je me suis souvenu encore une autre approche qui peut fonctionner pour vous (fake l'identité de l'utilisateur), s'il vous plaît voir: http://stackoverflow.com/questions/2937387/is-there-any-way-to-force-authentication- avec-zend-auth/2939327 # 2939327 – nuqqsa