【问题标题】:Multidimensional array causing error Fatal error: Default value for parameters with a class type hint can only be NULL in PHPunit 5.7 laravel 5.6多维数组导致错误致命错误:在 PHPunit 5.7 laravel 5.6 中具有类类型提示的参数的默认值只能为 NULL
【发布时间】:2019-12-04 04:42:34
【问题描述】:

我非常卡在这个错误上,几乎这是运行良好的代码

$data = ['tipo'=>1];

      $respuesta = $this->json('POST','api/endpoint',$data);

      $respuesta->assertJsonFragment(['success' => 1]);

这是一个给出错误的错误致命错误:具有类类型提示的参数的默认值只能为 NULL

$data = ['data' => ['tipo'=>1]];

      $respuesta = $this->json('POST','api/endpoint',$data);

      $respuesta->assertJsonFragment(['success' => 1]);

第一个运行完美,标记断言,第二个,抛出该错误,现在,我尝试使用 post(),但无济于事,发生完全相同的事情,所以我迷路了,我看不出多维数组可以做到这一点,虽然这个特定的 api 不使用多维数组,但我还有很多其他的使用

完整的跟踪

Fatal error: Default value for parameters with a class type hint can only be NULL in C:\laragon\www\gerinpro2\vendor\symfony\yaml\Yaml.php on line 52

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.' in C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Container\Container.php:895
Stack trace:
#0 C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Container\Container.php(735): Illuminate\Container\Container->notInstantiable('Illuminate\\Cont...')
#1 C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Container\Container.php(608): Illuminate\Container\Container->build('Illuminate\\Cont...')
#2 C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Container\Container.php(575): Illuminate\Container\Container->resolve('Illuminate\\Cont...')
#3 C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(728): Illuminate\Container\Container->make('Illuminate\\Cont...')
#4 C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleEx in C:\laragon\www\gerinpro2\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 895

【问题讨论】:

  • "这个特定的 api 不使用多维数组" 那你为什么要传递它呢?为什么不把它传递给$data['data'],它和你在第一次工作、通话中使用的一样?
  • 控制器动作的路由配置是什么样的,方法签名是什么,即被调用的方法接受什么参数?
  • 哦,主要是因为,我确实有其他需要多维数组的 api,事实上,我的大多数创建方法都是​​这样工作的,我有一个数组数组,主要用于 $data['data '] 数组,基本上看起来像这样 {data => [{field1 => 1 , field 2 => 2, etc etc}]
  • 哦,@dbrumann 路由很简单,尽管我没有使用中间件进行测试,所以在这段代码上方我有 withoutMiddleware() 方法Route::post('api/endpoint/','Roles_plan_gestionController@capturar') ->middleware('auten:---'); 使用数组数组的方法,接受结构为 { 'data' => [{field 1: value, field2: value }] 我的控制器所做的是在控制器上获取数组的“数据”部分并在其上运行 json_decode 然后将其发送到相应的方法模型,奇怪的部分是这在其他所有方面都可以正常工作,但 PHPunit 似乎有问题
  • 你能发布完整的堆栈跟踪吗?

标签: php arrays laravel-5 phpunit


【解决方案1】:

对于仍然遇到此问题的任何人,我都能够解决它,这主要是 PHP 版本问题,在这之前我已经完成了 composer update 命令,这意味着我的项目已更新但我的 laravel 版本没有,换句话说,您在我的堆栈跟踪中看到的那些文件正在使用 php 7.0+ 的功能,所以我所要做的就是改变它,做同样的事情,但使用 5.6 php 方法,这并不容易并且需要一些时间,但是,尽管如此,已修复它

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2020-05-04
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多