cre*_*re8 14 php phpunit laravel laravel-5.2
我有一个请求类失败的发布请求.当我用ajax调用它时,我得到422,因为验证规则失败了.但是当我使用phpunit测试具有相同值的相同路由时,它返回302.
我也没有得到像"只需要字段foobar"的错误消息302.
那么如何获取错误消息以检查它们是否相等?
这是我的测试代码:
//post exam
$this->post('modul/foo/exam', [
'date' => '2016-01-01'
])
->assertResponseStatus(200);
//post exam again
$this->post('modul/foo/exam', [
'date' => '2016-01-01'
])
->assertResponseStatus(302); //need to get 422 with th errors because its an api
Run Code Online (Sandbox Code Playgroud)
pat*_*cus 27
当验证FormRequest
失败时,它会检查请求是否为ajax或是否接受json响应.如果是这样,它将返回带有422状态代码的json响应.如果没有,它将返回重定向到指定的URL(默认情况下为前一个).因此,为了获得您正在寻找的失败响应(422),您需要发出json请求或ajax请求.
要发出json请求,您应该使用以下json()
方法:
//post exam
$this->json('POST', 'modul/foo/exam', [
'date' => '2016-01-01'
])
->assertResponseStatus(200);
//post exam again
$this->json('POST', 'modul/foo/exam', [
'date' => 'some invalid date'
])
->assertResponseStatus(422);
Run Code Online (Sandbox Code Playgroud)
要发出ajax请求,您需要添加ajax标头.为此,您可以继续使用该post()
方法:
//post exam
$this->post(, 'modul/foo/exam', [
'date' => '2016-01-01'
], ['HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest'])
->assertResponseStatus(200);
//post exam again
$this->post('modul/foo/exam', [
'date' => 'some invalid date'
], ['HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest'])
->assertResponseStatus(422);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4476 次 |
最近记录: |