好的,我已经尝试搜索了一段时间,寻找如何和为什么会出现这种情况的解决方案,以下是解释。
在生产环境中,这段代码的运行状态非常良好。
public function store(Add $request) {
$data = $request->validated();
//.... some other stuff
}
Add
是一个继承 Illuminate\Foundation\Http\FormRequest
的类,它只有一些规则(我已经检查过并且没有影响错误,这就是不被发布的原因)。
在我的测试架构中,我有几个场景,主要是接受测试,以确保根据不同的数据输入创建(或不创建)所有内容。 这些调用像 $this->call($uri, $body, $headers)
这样的调用按预期工作,模拟生产环境。
然而,我正试图编写一个特定于控制器的测试,但它却一直给我这个错误:
$userController = new UserController();
$request = Add::create('/test', 'POST', $body);
$userController->store($request);
这将输出一个错误:
Error: Call to a member function validated() on null
vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:188
我尝试输出dd($request->validated());
的返回结果,但程序崩溃了。
- 该怎么解决?
- 为什么会出现这种情况?
$this->call($uri, $body, $headers)
中的第二个参数是$body
,但您在Add::create('/test', 'POST', $body);
中传递了表单的方法。也许这就是问题所在? - Saiyan Prince