Я повернул throw Exception в handler.php, чтобы я мог поймать exceptions и увидеть errors, но произошло то, что когда я пытаюсь сделать validation checks, меня бросает исключение, которое является правильным, но в моем тестовом примере вместо того, чтобы поймать exception, я утверждаю, что в сеансе есть ошибки.

/** @test*/
    public function a_thread_requires_a_title(){

        $thread = make('App\Thread', ['title'=> null]);
        $this->post('threads', $thread->toArray())
            ->assertSessionHasErrors('title');
    }

Поскольку validation error является исключением, он выдает мне исключение, потому что я изменил файл handler.php как

if(app()->environment() === "testing") throw $exception;

Итак, что я пытаюсь сделать, так это изменить env для этого одного теста, чтобы он не вызывал мне `` Исключение ''

1
rakesh shrestha 16 Мар 2019 в 18:04

1 ответ

Лучший ответ

Есть два вспомогательных метода, которые вы можете написать в верхней части вашего тестового метода:

$this->withoutExceptionHandling(); и $this->withExceptionHandling();

Они включены в трейт Laravel Illuminate \ Foundation \ Testing \ Concerns \ InteractsWithExceptionHandling, который используется абстрактным TestCase, который вы должны расширять из своего теста. (как упоминалось здесь)

/** @test*/
public function a_thread_requires_a_title() {
    $this->withExceptionHandling();

    $thread = make('App\Thread', ['title'=> null]);
    $this->post('threads', $thread->toArray())
        ->assertSessionHasErrors('title');
}
1
senty 16 Мар 2019 в 17:47