我有一个控制器,在提交电子邮件后,执行重定向到主页,如下所示:
return Redirect::route('home')->with("message", "Ok!");
字符串
我正在为它写测试,我不知道如何让phpunit遵循重定向,测试成功消息:
public function testMessageSucceeds() {
$crawler = $this->client->request('POST', '/contact', ['email' => '[email protected]', 'message' => "lorem ipsum"]);
$this->assertResponseStatus(302);
$this->assertRedirectedToRoute('home');
$message = $crawler->filter('.success-message');
// Here it fails
$this->assertCount(1, $message);
}
型
如果我用控制器上的代码替换它,并删除前两个Assert,它就可以工作了
Session::flash('message', 'Ok!');
return $this->makeView('staticPages.home');
型
但是我想使用Redirect::route
。有没有办法让PHPUnit跟随重定向?
6条答案
按热度按时间kqhtkvqz1#
你可以让PHPUnit跟随重定向:
Modern Laravel(>= 5.5.19):
字符串
旧版Laravel(< 5.4.12):
型
用法:
型
注意:需要为每个请求显式设置。
对于这两个版本之间的版本:
有关变通方法,请参见https://github.com/laravel/framework/issues/18016#issuecomment-322401713。
cunj1qz12#
Laravel 8测试
字符串
对我有用,希望有帮助。
wgeznvg73#
你可以告诉crawler以这种方式跟踪重定向:
字符串
所以在你的情况下,这将是这样的:
型
tzdcorbm4#
自从Laravel 5.5开始测试重定向,你可以使用assertRedirect:
字符串
z9zf31ra5#
字符串
4urapxun6#
对于Laravel 5.6,您可以设置
字符串
在测试用例的类文件中