laravel 单元测试错误 'call to member function call() on null'

laravel unit testing error 'call to member function call() on null'

我想为表单 post 请求编写单元测试。

public function addForm(SaveFormRequest $request)
{
    $this->servicelayer->addFormDetails($request->validated());

    return redirect->route('register');
}

如何模拟 $request->validated(); 以获得 FormRequest class。

我在下面试试

$saveRequest = $this->createMock(SaveFormRequest::class);

但是我得到一个错误:

Error: call to a member function call() on null.

提前致谢。

这真的很容易,你只是不mock一个FormRequest。您必须改为使用 功能测试 ,使用 $this->get$this->post 或您需要的任何操作。

所以您只需将正确的参数传递给 route,这样 FormRequest 就可以通过验证。这是测试它的唯一方法。

如果你解释你为什么要这样做,我可以扩展我的答案,因为我不知道你为什么要这样做...