Ответ 1
Лучшим подходом было бы абстрагирование запроса в отдельный класс и вообще не доступ к суперглобалам. Таким образом вы отключаете реальный сервер и запрашиваете среду от приложения. Затем вы можете легко издеваться над запросом.
Я новичок в тестировании, я использую PHPUnit для написания теста. Весь сайт был разработан с использованием шаблона MVC.
Я хотел бы протестировать каждый метод на моих контроллерах, проблема в том, что такие методы получают параметры, но переменную $_POST. Как я могу перезаписать эту переменную?
Спасибо заранее Алехандра
Лучшим подходом было бы абстрагирование запроса в отдельный класс и вообще не доступ к суперглобалам. Таким образом вы отключаете реальный сервер и запрашиваете среду от приложения. Затем вы можете легко издеваться над запросом.
Во-первых, если вы используете Zend_Test, используйте
$this->request->setMethod('POST')->setPost(array(insert array info here));
Если вы не используете это, попробуйте следующее:
Предупреждение: не лучшее решение, но оно будет работать!
Поместите это в свой комплект setUp
protected function setUp()
{
parent::setUp();
$_POST = array();
}
Затем, прежде чем вы вызовете свой тест, просто сделайте что-то похожее на это:
$_POST = array(insert array data here)
Даже если кто-то скажет, что он не чист, вы можете установить данные в $_POST
, прежде чем вызывать свои методы: он не читается, -)