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');