Заглушка PHPUnit генерирует исключение, но не может быть пойман - PullRequest
8 голосов
/ 19 апреля 2011

Я пытаюсь проверить блок try / catch, используя заглушку, которая выдает исключение при вызове определенного метода create. Он работает нормально, исключение возникает, но вместо того, чтобы мое приложение его перехватило, оно останавливает выполнение теста. Какие есть лучшие способы сделать это.

<?php
// TestCase
        $mockDao->expects($this->once())
                ->method('create')
                ->will($this->throwException(new \Exception));

        $service->addEntity($data);
?>


<?php
// Service
    public function addEntity($data)
    {
           ....

        try {
               ...
            $this->create($entity); // Test Halts with Exception
               ...
        } catch (Exception $e) {
           // Never Gets Called
           $this->handleException($e);
        }
    }

1 Ответ

8 голосов
/ 19 апреля 2011

Вы бросаете \Exception, но ловите Exception. Класс, который реализует addEntity() в пространстве имен? Помогает ли его изменение, чтобы поймать \Exception, проблему? Если нет, попробуйте изменить тест на бросок Exception.

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