Как проверить вывод действия в ZF2/ZF3?

Как поймать ( ViewModel ) вывод действия контроллера в ZF2/ZF3?

Фон:

Я пишу несколько интеграционных тестов для приложения Zend Framework 3 (только что перенесенного из ZF2). Я использую PHPUnit v6.2.2 и зенд \ тест v3.1.0, Я хочу протестировать часть процесса с момента вызова маршрута до момента сохранения / получения данных. Это означает тестирование всех действий контроллера в следующих направлениях:

  1. данные сохраняются, как и ожидалось (для этого я хочу вызвать маршруты / действия и затем проверить новое состояние базы данных);
  2. данные извлекаются, как и ожидалось (для этого я хочу вызвать маршруты / действия и проверить вывод действия).

Первое направление ясно: после вызова маршрута я просто запускаю простые запросы к базе данных и проверяю, есть ли ожидаемые изменения.

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();
}