Выделение Zend_Session в тестах PHPUnit - PullRequest
4 голосов
/ 18 мая 2010

Я тестирую функциональность аутентификации моего сайта. Zend_Auth используется в качестве механизма авторизации. Но статус проверки остается между тестами, и мне нужно писать 'logout' в каждом tearDown.

Теперь все в порядке. Но проблема заключается в следующем. Насколько я знаю, Zend_Auth использует Zend_Session для хранения данных аутентификации. Итак, сессия является общей для всех тестов. Я боюсь, что в будущем это может вызвать проблемы.

Можете ли вы сказать мне, как лучше делать сессии для каждого теста изолированными?

Теперь я могу представить себе только запуск сеанса вручную в setUp и остановку в tearDown. Но у меня есть много тестов, и реализация этого может занять много времени.

1 Ответ

1 голос
/ 18 мая 2010

PHPUnit позволяет определять общее устройство (общая настройка) для всего набора тестов. Однако это решение просто скрывает недостаток в дизайне тестов, поскольку оно не учитывает их зависимость от общего глобального состояния. Лучшее решение - использовать удвоение теста , создавая пользовательские заглушки определенных классов для управления поведением выбранных частей системы.

В этом случае вы можете попытаться создать заглушку Zend_Auth, чтобы она пропускала использование Zend_Session и возвращала нужные разрешения для каждого модульного теста.

...