发出POST请求以创建新资源后,通常会将浏览器重定向到URL,以查看创建的资源。 Laravel通过从控制器操作返回redirect($ location)来解决这个问题。
这一切都很好,只是它使测试有些尴尬。能够通过以下方式测试这些响应将是很棒的:
$this->post(...)->assertSuccessful();
但这专门测试了200到299之间的HTTP状态代码。相反,您似乎需要使用:
$this->post(...)->assertRedirect($location);
确实没有问题,但这不是理想的,因为它实际上在测试两个不同的事物:POST请求成功,并且响应将用户重定向到创建的资源。
是否有更好的方法来处理?我曾考虑过使用带有Location标头的201响应,但是浏览器似乎并没有遵循这些响应。
答案 0 :(得分:0)
从laravel 5.5开始,您可以在测试中设置以下重定向:
$this->followingRedirects()->post(...)->assertSuccessful();