创建成功后的Laravel http响应

时间:2018-07-10 20:29:10

标签: php laravel testing

发出POST请求以创建新资源后,通常会将浏览器重定向到URL,以查看创建的资源。 Laravel通过从控制器操作返回redirect($ location)来解决这个问题。

这一切都很好,只是它使测试有些尴尬。能够通过以下方式测试这些响应将是很棒的:

$this->post(...)->assertSuccessful();

但这专门测试了200到299之间的HTTP状态代码。相反,您似乎需要使用:

$this->post(...)->assertRedirect($location);

确实没有问题,但这不是理想的,因为它实际上在测试两个不同的事物:POST请求成功,并且响应将用户重定向到创建的资源。

是否有更好的方法来处理?我曾考虑过使用带有Location标头的201响应,但是浏览器似乎并没有遵循这些响应。

1 个答案:

答案 0 :(得分:0)

从laravel 5.5开始,您可以在测试中设置以下重定向:

$this->followingRedirects()->post(...)->assertSuccessful();