Illuminate \ Validation \ ValidationException:给定的数据无效。在测试期间尝试从响应获取json时调用

时间:2018-11-02 16:36:00

标签: laravel laravel-validation laravel-testing

我进行了以下测试:

public function testStoreMemberValidation()
{
    $response = $this->withExceptionHandling()->post('/api/members', [
        "name" => "Eve",
        "age" => "invalid"
    ], ['X-Requested-With' => 'XMLHttpRequest']);

    dd($response->json());
};

我试图断定响应是验证错误的形式。控制器方法如下:

public function store(Request $request)
{
    $data = $request->validate([
        'name' => 'required|string',
        'age' => 'required|integer',
    ]);

    Member::create($data);
}

但是,每当我调用任何调用$response->json()的断言(大多数情况下)时,我都会得到一个异常:

  

Illuminate \ Validation \ ValidationException:给定的数据无效。

如何在不引发此错误的情况下对此响应执行断言?

注意,我正在使用Laravel 5.7。

1 个答案:

答案 0 :(得分:1)

您的测试中有withExceptionHandling(),请删除它,它应该可以工作。

$response = $this->withExceptionHandling()->post('/api/members', [
        "name" => "Eve",
        "age" => "invalid"
    ], ['X-Requested-With' => 'XMLHttpRequest']);

应该是

$response = $this->post('/api/members', [
            "name" => "Eve",
            "age" => "invalid"
        ], ['X-Requested-With' => 'XMLHttpRequest']);