Это старый вопрос, но я боролся с этим сегодня и не мог найти хорошего ответа где-либо еще, поэтому я продолжу и напишу, что я сделал, чтобы решить эту проблему.Ответ на самом деле очень прост.
Направьте вашу отправку на действие, которое приведет к исключению.
Мое приложение выдает ошибку, когда запрос get сделан в конечную точку JSON,поэтому я использовал один из них, чтобы проверить это.
/**
* @covers ErrorController::errorAction
*/
public function testErrorAction500() {
/**
* Requesting a page that doesn't exist returns the proper error message
*/
$this->dispatch('/my-json-controller/json-end-point');
$body = $this->getResponse()->getBody();
$this->assertResponseCode('500');
$this->assertContains('Application error',$body);
}
В качестве альтернативы, если вы не возражаете против действия только для тестирования, вы можете просто создать действие, которое только вызывает ошибку и указывает на это действие.в вашем модульном тесте.
public function errorAction() {
throw new Exception('You should not be here');
}
Тогда ваш тест будет выглядеть так:
/**
* @covers ErrorController::errorAction
*/
public function testErrorAction500() {
/**
* Requesting a page that doesn't exist returns the proper error message
*/
$this->dispatch('/my-error-controller/error');
$body = $this->getResponse()->getBody();
$this->assertResponseCode('500');
$this->assertContains('Application error',$body);
}