phpunit:在Laravel中验证验证异常

时间:2019-03-16 15:04:38

标签: laravel laravel-5 phpunit phpunit-testing laravel-testing

我已经将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;

所以,我要尝试的是更改此测试的环境,以免引发“异常”

1 个答案:

答案 0 :(得分:1)

您可以在测试方法的顶部编写2种辅助方法:

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

  

它们包含在Laravel的“ Illuminate \ Foundation \ Testing \ Concerns \ InteractsWithExceptionHandling”特征中,该特征由抽象TestCase使用,您应该从测试中进行扩展。 as mentioned here

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

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