为了账号安全,请及时绑定邮箱和手机立即绑定

PHPUnit Mock 'method' 方法返回 NULL

PHPUnit Mock 'method' 方法返回 NULL

PHP
FFIVE 2022-12-03 10:55:44
我知道标题使这看起来与常见问题非常相似。这不是同一个问题。在我的 Laravel 测试套件中,我试图模拟Illuminate\Http\Request对象以getClientIp返回特定值:$this->mockedRequest = $this->createMock(Request::class); $this->mockedRequest->method('getClientIp')->willReturn('geralt.of.rivia');但是,上面的代码行给我以下错误:Call to a member function willReturn() on null换句话说,PHPUnit mockmethod()方法本身就是返回 null,显然不可能->willReturn()在它之后进行链接。我不知道是什么导致了这个问题,而且谷歌搜索这个错误非常困难,因为有很多人问为什么他们的模拟方法会返回null(因为他们没有链接->willReturn().有什么见解吗?PHP 7.0拉维尔 5.3PHPUnit 5.7
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

像往常一样,我终于在发布 StackOverflow 问题后立即找到了答案。

碰巧的是Request,Laravel 中的对象包含一个名为method(). 这是 PHPUnit 的一个已知问题。如果您正在模拟的类实现了一个名为 的方法method(),您可以通过expects()首先链接来解决这个问题:

$this->mockedRequest-->expects($this->any())->method('getClientIp')->willReturn('geralt.of.rivia');



查看完整回答
反对 回复 2022-12-03
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信