代码:
class MockMe
{
public function mockMeee()
{
return 'Im not mocked';
}
}
试验:
$sut = new MockMe();
$this
->getMock(get_class($sut))
->expects($this->any())
->method('mockMeee')
->will($this->returnValue('Im finally mocked'));
echo $sut->mockMeee();
这会输出原始"Im not mocked"
,但它应该发送Im finally mocked
文本。有什么问题?
编辑:完成:
$stub = $this->getMock('MockMe');
$stub->method('mockMeee')->willReturn('Im finally mocked');
echo $stub->mockMeee();
答案 0 :(得分:2)
你正在构建真正的MockMe,然后构建一个你无所事事的模拟。我认为你的测试应该是这样的:
$sut = $this->getMock('MockMe');
$sut->expects($this->any())
->method('mockMeee')
->will($this->returnValue('Im finally mocked'));
echo $sut->mockMeee();
有关PHPUnit模拟的详细信息,请参阅http://phpunit.de/manual/4.2/en/test-doubles.html。