我已经将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;
所以,我要尝试的是更改此测试的环境,以免引发“异常”
答案 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');
}