我正在编写PHP单元测试,我使用公共方法testMeMethod
(我想测试)和私有方法privateMethod
(由公共方法调用)。我这样嘲笑我的课:
$constructorArgs = array(
'foo',
'void'
);
$myMock = $this->getMockBuilder('\some\namespace\MockMeClass')
->setConstructorArgs($constructorArgs)
->getMock();
但这将使所有方法存根,我需要测试我的公共方法。我需要存根只是私有方法,所以我试过:
$myMock = $this->getMockBuilder('\some\namespace\MockMeClass')
->setConstructorArgs($constructorArgs)
->setMethods(array('privateMethod'))
->getMock();
$myMock->expects($this->any())->method('privateMethod')->will($this->returnValue('Return this'));
但即使在那之后,如果我打电话:
$myMock->testMeMethod();
处理实际的公共方法代码,但也适用于私有方法。如果没有运行实际代码,为什么不覆盖私有方法只返回Return this
?