gpt4 book ai didi

laravel-5 - PHPUnit env中的Laravel自定义FormRequest

转载 作者:行者123 更新时间:2023-12-03 20:51:53 24 4
gpt4 key购买 nike

好的,我已经尝试了一段时间来寻找关于如何以及为什么发生这种情况的解决方案,就在这里。

在生产环境中,这段代码工作得很好。

public function store(Add $request) {
$data = $request->validated();
//.... some other stuff
}
Add是一个扩展 Illuminate\Foundation\Http\FormRequest 的类,它只有一些规则(我已经检查过并且不影响错误,是没有发布的原因)

在我的测试模式中,我有几个场景,主要是验收测试,以确保根据不同的数据输入创建(或不创建)所有内容。这些调用电话,例如 $this->call($uri, $body, $headers)它们按预期工作,模拟生产环境。

但是,我正在尝试编写一个特定于 Controller 的测试,它一直给我这个错误:
$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());返回,但这是它崩溃的地方。
  • 解决办法是什么?
  • 为什么会发生?
  • 最佳答案

    创建请求的新实例时,有一些属性设置为 null ,您将必须填充 container , redirectorvalidator自己才能在 Controller 中正确使用请求。

    像这样的东西应该工作:

    $userController = new UserController();

    // create the request and set the container and redirector
    $request = Add::create('/test', 'POST', $body)
    ->setContainer($this->app)
    ->setRedirector($this->app['redirect']);

    // resolve the validator
    $request->validateResolved();

    $userController->store($request);

    关于laravel-5 - PHPUnit env中的Laravel自定义FormRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62449060/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com