Не могу понять, как правильно тестировать контроллеры?
- Контроллер принимает параметры из реквеста, чтобы в тесте подставлять произвольные параметры, нужен метод setParam, которого в Yii нет.
- Как в тесте создать экземпляр полностью рабочего контроллера?
Unit-тестирование контроллеров
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Unit-тестирование контроллеров
Тут нужные не unit-тесты, а функциональные: http://yiiframework.ru/doc/guide/ru/test.functional
Нравится Yii? Давайте сделаем его лучше!.
Re: Unit-тестирование контроллеров
Нет, функциональные тесты тут не нужны.
Вывод не предназначен для браузера, селениум тут не нужен.
Вывод не предназначен для браузера, селениум тут не нужен.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Unit-тестирование контроллеров
Вывод идёт по HTTP? Если да, браузер его вполне переварит. И Selenium тоже.
Вообще если появилась необходимость тестирования контроллера и это unit, а не функциональные тесты — признак того, что вы переложили логику модели на контроллер. Тонкие модели и толстые контроллеры не очень подходят для модульных тестов сами по себе.
Вообще если появилась необходимость тестирования контроллера и это unit, а не функциональные тесты — признак того, что вы переложили логику модели на контроллер. Тонкие модели и толстые контроллеры не очень подходят для модульных тестов сами по себе.
Нравится Yii? Давайте сделаем его лучше!.
Re: Unit-тестирование контроллеров
полностью согласен с Sam Dark!
введите в систему дополнительный уровень абстракции между моделями и контроллерами: сервис слой, куда перенесите бизнес логику (запросы к ARи тп) из ваших контроллеров, и к моделям обращайтесь только через этот слой. (в виду архитектуры AR в yii, методы сервис слоя могут находиться в моделях, а не отдельных классах).
Сервис слой легко будет тестировать, а контроллеры останутся тонкими.
небольшая презентация на эту тему:
http://www.slideshare.net/zfconf/zend-f ... ion-part-1
введите в систему дополнительный уровень абстракции между моделями и контроллерами: сервис слой, куда перенесите бизнес логику (запросы к ARи тп) из ваших контроллеров, и к моделям обращайтесь только через этот слой. (в виду архитектуры AR в yii, методы сервис слоя могут находиться в моделях, а не отдельных классах).
Сервис слой легко будет тестировать, а контроллеры останутся тонкими.
небольшая презентация на эту тему:
http://www.slideshare.net/zfconf/zend-f ... ion-part-1