Проблема тестирования исключений с помощью PHPUnit и Zend Framework - PullRequest
6 голосов
/ 01 июля 2011

Когда пользователь обращается к / user / validate без правильных параметров публикации, мое приложение Zend выдает исключение zend. (Я получаю стандартное сообщение «Произошла ошибка» в рамке моего макета). Это намеренно.

Сейчас я пытаюсь проверить это поведение с помощью PHPUnit. Вот мой тест:

/**
 * @expectedException Zend_Exception
 */
public function testEmptyUserValidationParametersCauseException() {
    $this->dispatch('/user/validate');
}

Когда я запускаю тест, я получаю сообщение о том, что он не прошел, "Ожидается исключение Zend_Exception". Есть идеи?

У меня есть другие тесты в файле, которые работают нормально ...

Спасибо!

Ответы [ 2 ]

5 голосов
/ 01 июля 2011

Плагин Zend_Controller_Plugin_ErrorHandler обрабатывает для вас исключения, а по умолчанию Error_Controller вызывает перенаправление 500, что может означать, что исключение, которое вы тестируете, больше не существует.Попробуйте следующий модульный тест и посмотрите, прошел ли он:

public function testUnknownUserRedirectsToErrorPage()
{
    $this->dispatch('/user/validate');
    $this->assertController('error');
    $this->assertAction('error');
    $this->assertResponseCode('500');
}

Если это сработает, то это покажет, что к тому времени, когда вы рендерите представление ошибки, исключение больше не будет существовать, так как оно содержится в коде ранее.перенаправление.

2 голосов
/ 01 июля 2011

Ну, может, он просто терпит неудачу, потому что не выдается исключение?

Вы пытались запустить тест без "@expectedException Zend_Exception"? Есть ли вообще исключение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...