Phpunit: исключение валидации в laravel - PullRequest
1 голос
/ 16 марта 2019

Я превратил 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 Ответ

1 голос
/ 16 марта 2019

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

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

Они включены в Laravel's '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');
}
...