Параметры POST для теста PHPUnit

Я новичок в тестировании, я использую PHPUnit для написания теста. Весь сайт был разработан с использованием шаблона MVC.

Я хотел бы протестировать каждый метод на моих контроллерах, проблема в том, что такие методы получают параметры, но переменную $_POST. Как я могу перезаписать эту переменную?

Спасибо заранее Алехандра

Ответ 1

Лучшим подходом было бы абстрагирование запроса в отдельный класс и вообще не доступ к суперглобалам. Таким образом вы отключаете реальный сервер и запрашиваете среду от приложения. Затем вы можете легко издеваться над запросом.

Ответ 2

Во-первых, если вы используете 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)

Ответ 3

Даже если кто-то скажет, что он не чист, вы можете установить данные в $_POST, прежде чем вызывать свои методы: он не читается, -)