Как проверить вывод действия в ZF2/ZF3?
Как поймать ( ViewModel
) вывод действия контроллера в ZF2/ZF3?
Фон:
Я пишу несколько интеграционных тестов для приложения Zend Framework 3 (только что перенесенного из ZF2). Я использую PHPUnit v6.2.2
и зенд \ тест v3.1.0
, Я хочу протестировать часть процесса с момента вызова маршрута до момента сохранения / получения данных. Это означает тестирование всех действий контроллера в следующих направлениях:
- данные сохраняются, как и ожидалось (для этого я хочу вызвать маршруты / действия и затем проверить новое состояние базы данных);
- данные извлекаются, как и ожидалось (для этого я хочу вызвать маршруты / действия и проверить вывод действия).
Первое направление ясно: после вызова маршрута я просто запускаю простые запросы к базе данных и проверяю, есть ли ожидаемые изменения.
public function testBuzAction()
{
$this->dispatch('/foo/bar/buz');
// Here might be optionally some asserts, whether the correct action is called...
// Here are the database checks...
}
Но для другого направления нам нужны ViewModel
, возвращенный действием.
public function testBuzAction()
{
$this->dispatch('/foo/bar/buz');
// Here might be optionally some asserts, whether the correct action is called...
// Here is the ViewModel output of the Bar#buzAction() analyzed.
}
Как получить результат действия в тесте PHPUnit?
1 ответ
Решение
public function testBuzAction()
{
$this->dispatch('/foo/bar/buz');
...
$viewModelReturnedByAction = $this->getApplication()->getMvcEvent()->getResult();
}