防止 laravel 测试 $this->get() 在状态代码不是 200 时引发 HTTP 异常



我使用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);

看到我可以自己捕获此异常,但是我将无法以简单的方式将我的断言应用于响应。我该如何解决这个麻烦?

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

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

最新更新