两个字符串的显示错误在单元测试中相等

时间:2019-04-02 07:11:32

标签: php laravel unit-testing

我创建了一个小的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('/');

2 个答案:

答案 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');
    }