我创建了一个小的Laravel项目,并且正在对该项目进行单元测试。当我在函数中填写错误的凭据时,它不会重定向到登录页面,并在终端上显示错误,指出无法断言两个字符串相等。这是我的代码...
$credentials = [
'email' => 'test@gmail.com',
'password' => 'wrongcode'
];
$this->post('/login', $credentials)->assertRedirect('/login');
但是当我将assertRedirect('/login')
更改为assertRedirect('/')
时,效果很好
$credentials = [
'email' => 'test1234@gmail.com',
'password' => '98756412'
];
$this->post('/login', $credentials)->assertRedirect('/');
答案 0 :(得分:1)
assertRedirect检查两个字符串,其中之一是方法的参数,第二个是重定向路径。看起来一切正常。您编写了一个测试,测试失败了,您有改进应用程序的反馈。在这种情况下,重定向路径与您预期的不同。
答案 1 :(得分:0)
对于单个情况,应有2种不同的方法,如下所示。
public function testCorrectCredential() {
$credentials = [
'email' => 'test1234@gmail.com',
'password' => '98756412'
];
$this->post('/login', $credentials)->assertRedirect('/');
}
public function testInCorrectCredential() {
$credentials = [
'email' => 'incorrect@gmail.com',
'password' => '98756412'
];
$this->post('/login', $credentials)->assertRedirect('/incorrect-url');
}