Отключить обработку исключений Laravel для тестов - PullRequest
0 голосов
/ 02 июня 2018

Я следую по этому курсу testdrivenlaravel , и в нем упоминается способ отключить обработку исключений Laravel, чтобы Laravel не обрабатывал возникающие исключения и вместо этого выбрасывал их, чтобы мы могли получить более подробную ошибку в нашемпроверяет вывод.

Поэтому я добавил этот метод в свой класс testcase, и в методе рендеринга я выбрасываю исключение

protected function disableExceptionHandling() {

    $this->app->instance(Handler::class, new class extends Handler {
        public function __construct()
        {
        }
        public function report(\Exception $e)
        {
        }
        public function render($request, \Exception $e)
        {
            throw $e;
        }
    });
}

Но всякий раз, когда я вызываю его в тесте, чтобы получить большеПодробная ошибка, я до сих пор получаю те же ошибки, что и Laravel Handler.

Когда я изменяю класс Handler непосредственно следующим образом:

public function render($request, Exception $exception)
{
    throw $exception;
    // return parent::render($request, $exception);
}

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

Ответы [ 2 ]

0 голосов
/ 23 августа 2019

Должно работать нормально.Убедитесь, что в всех классах, на которые вы ссылаетесь из приведенного выше кода, есть правильные полные именные упоминания в верхней части вашего файла.Например:

use App\Exceptions\Handler;

И убедитесь, что вы вызываете метод из своего теста.

0 голосов
/ 29 января 2019

Поместите это в начало вашего тестового метода:

    $this->withoutExceptionHandling();

Вам не нужно создавать метод для этого, он включен в черту laravel 'InteractsWithExceptionHandling', которая используется абстрактным TestCase, которыйВы должны выходить из своего теста.

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