Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果响应包含错误,是否进行拉威尔测试?_Php_Laravel_Testing_Phpunit - Fatal编程技术网

Php 如果响应包含错误,是否进行拉威尔测试?

Php 如果响应包含错误,是否进行拉威尔测试?,php,laravel,testing,phpunit,Php,Laravel,Testing,Phpunit,我正在编写一个遗留代码,并尝试使用测试来覆盖代码,以便以后进行重构。在一个控制器中,有一段代码如下: return redirect()->route('login')->withErrors(['invalid credentials']); 以下是我对测试的断言: $response->assertRedirect(路由('login'); $response->assertSessionHasErrors([ 0=>“无效凭据” ]); 但问题是我得到了以下输出: 会话丢失错误:“无效

我正在编写一个遗留代码,并尝试使用测试来覆盖代码,以便以后进行重构。在一个控制器中,有一段代码如下:

return redirect()->route('login')->withErrors(['invalid credentials']);
以下是我对测试的断言:

$response->assertRedirect(路由('login');
$response->assertSessionHasErrors([
0=>“无效凭据”
]);
但问题是我得到了以下输出:

会话丢失错误:“无效凭据”
断言false为true失败。

你知道我该怎么做吗?

看看
assertSessionHasErrors()
的源代码,我认为你的用例无法做到这一点。问题是
withErrors(…)
方法中的未命名数组。我为您提供了两种选择:

  • 将旧版应用程序更改为:
return redirect()->路由('login')->错误(['error'=>'invalid credentials']);
之后,您可以这样运行测试:

$response->assertRedirect(路由('login');
$response->assertSessionHasErrors([
'错误'=>'无效凭据'
]);
  • 如果无法更改旧版应用程序,则可以使用以下方法:
$response->assertRedirect(路由('login');
$this->assertEquals(会话('errors')->getBag('default')->first(),'invalid credentials');