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

当在模拟对象上调用任何未配置的方法时,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'));


慕勒3428872
浏览 104回答 1
1回答

HUH函数

这是通过禁用自动返回值生成来完成的。$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定义返回方法。
打开App,查看更多内容
随时随地看视频慕课网APP