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

如何使 PHPUnit 模拟在调用未配置的方法时失败?

如何使 PHPUnit 模拟在调用未配置的方法时失败?

PHP
慕勒3428872 2022-07-16 18:51:05
当在模拟对象上调用任何未配置的方法时,PHPUnit 是否可能失败?例子;$foo = $this->createMock(Foo::class);$foo->expects($this->any())->method('hello')->with('world');$foo->hello('world');$foo->bye();这个测试会成功。我希望它失败Foo::bye() was not expected to be called. PS以下将起作用,但这意味着我必须在回调中列出所有配置的方法。这不是一个合适的解决方案。$foo->expects($this->never())    ->method($this->callback(fn($method) => $method !== 'hello'));
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

这是通过禁用自动返回值生成来完成的。


$foo = $this->getMockBuilder(Foo::class)

    ->disableAutoReturnValueGeneration()

    ->getMock();


$foo->expects($this->any())->method('hello')->with('world');


$foo->hello('world');

$foo->bye();

这将导致


Return value inference disabled and no expectation set up for Foo::bye()

请注意,其他方法(如 )不需要hello定义返回方法。


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

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