class Foo {
public function method() {
}
public function bar() {
}
}
如果我有课程Foo
,我可以使用以下语法更改bar
的行为。
$stub = $this->createMock(Foo::class);
$stub->expects($this->any())
->method('bar')
->willReturn('baz');
限制:命名方法"方法"上面显示的示例仅适用 当原始类没有声明名为"方法"的方法时。如果 原始类确实声明了一个名为"方法"的方法。然后 $ stub->期待($这 - >任何()) - >方法(' doSomething的') - > willReturn('富&#39); 必须使用。
https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs
但我的问题是,如何在PHPUnit中更改Foo::method()
的行为?有可能吗?
答案 0 :(得分:2)
这很好用: 使用PHP 7.0.9 / PHPUnit 4.8.27进行测试
<H|T>
修改强>
使用PHP 7.0.9 / PHPUnit 5.6.2测试另外:
public function testMethod()
{
$stub = $this->getMock(Foo::class);
$stub->expects($this->once())
->method('method')
->willReturn('works!');
$this->assertEquals('works!', $stub->method('method'));
}
仅显示第一个方法的弃用警告,但测试成功通过。