我对这个错误很执迷,这几乎是可以正常运行的代码
$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不使用多维数组,但我还有很多其他的函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明你在某个地方定义了一个函数或方法,其中有一个参数使用了类类型提示,并且为这个参数提供了一个非NULL的默认值。PHP不允许这样做,当一个参数使用了类类型提示(例如 MyClass $obj
),其默认值只能是 NULL
或者不设置默认值。
根据你提供的代码片段,直接信息不足以定位问题所在,因为展示的代码片段并没有显示任何自定义函数或方法定义,而是在使用Laravel框架的测试功能进行API请求和断言。这里假设你可能在自定义的测试用例类中重写了或者添加了某些方法,并在这些方法里犯了上述错误。
要解决这个问题,请检查以下几个方面:
自定义方法检查:回顾你的测试类或其他相关类中是否有自定义的方法,特别是那些被 $this->json()
或 post()
调用之前或之中的方法。重点检查这些方法的参数列表,看是否有一个参数使用了类类型提示并且给了它一个非NULL的默认值。
框架或库的更新:如果你最近更新了Laravel框架或相关的依赖库,有可能是由于新版本的约束更严格导致的。查阅更新日志或官方文档,确认是否有行为变更需要你的代码做出调整。
扩展或自定义宏:如果你对Laravel的HTTP测试客户端进行了扩展,或者定义了自己的测试断言宏,确保这些扩展点没有违反PHP关于类型提示默认值的规则。
查看堆栈跟踪:当遇到错误时,查看详细的错误堆栈信息,这将帮助你定位到具体哪一行代码引发了这个错误,从而更容易地解决问题。
如果以上步骤都无法帮你找到问题所在,建议分享更多上下文信息,比如具体的错误堆栈跟踪、涉及的自定义代码段等,以便获得更精确的帮助。