当状态代码不是200时,防止laravel测试$ this-> get()从抛出HTTP异常

时间:2017-05-15 11:16:45

标签: php laravel phpunit

我使用laravel 5.4。在我的测试中,我做了类似的事情:

$this->get("/api/test")->assertStatus(422)->assertJson([
        "status" => "ok"
]);

当状态代码为422时,我得到一个HttpException,即使我已经完全准备好了 - 我甚至期待它。我的问题是异常阻止了我的断言,因此assertJson不起作用。

$this->expectException(HttpException::class)无效,因为它捕获此异常并停止,因此开始传递:

$this->expectException(HttpException::class)
$this->get("/api/test")->assertStatus(422)->assertJson([
        "status" => "ok"
]);
$this->assertTrue(false);

我发现自己可以捕获此异常,但之后我无法以简单的方式将我的断言应用于响应。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

验证错误仅在json或ajax请求上转换为json响应。试试这个。

$this->getJson("/api/test")->assertStatus(422)->assertJson([
        "status" => "ok"
]);