开发者社区 问答 正文

导致错误的多维数组致命错误:具有类类型提示的参数的默认值只能在PHPunit 5.7 laravel

我对这个错误很执迷,这几乎是可以正常运行的代码


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

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

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


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

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

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

展开
收起
社区秘书 2019-12-04 13:39:08 753 分享 版权
阿里云 AI 助理回答

这个错误信息表明你在某个地方定义了一个函数或方法,其中有一个参数使用了类类型提示,并且为这个参数提供了一个非NULL的默认值。PHP不允许这样做,当一个参数使用了类类型提示(例如 MyClass $obj),其默认值只能是 NULL 或者不设置默认值。

根据你提供的代码片段,直接信息不足以定位问题所在,因为展示的代码片段并没有显示任何自定义函数或方法定义,而是在使用Laravel框架的测试功能进行API请求和断言。这里假设你可能在自定义的测试用例类中重写了或者添加了某些方法,并在这些方法里犯了上述错误。

要解决这个问题,请检查以下几个方面:

  1. 自定义方法检查:回顾你的测试类或其他相关类中是否有自定义的方法,特别是那些被 $this->json()post() 调用之前或之中的方法。重点检查这些方法的参数列表,看是否有一个参数使用了类类型提示并且给了它一个非NULL的默认值。

  2. 框架或库的更新:如果你最近更新了Laravel框架或相关的依赖库,有可能是由于新版本的约束更严格导致的。查阅更新日志或官方文档,确认是否有行为变更需要你的代码做出调整。

  3. 扩展或自定义宏:如果你对Laravel的HTTP测试客户端进行了扩展,或者定义了自己的测试断言宏,确保这些扩展点没有违反PHP关于类型提示默认值的规则。

  4. 查看堆栈跟踪:当遇到错误时,查看详细的错误堆栈信息,这将帮助你定位到具体哪一行代码引发了这个错误,从而更容易地解决问题。

如果以上步骤都无法帮你找到问题所在,建议分享更多上下文信息,比如具体的错误堆栈跟踪、涉及的自定义代码段等,以便获得更精确的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: