0
请考虑此功能使用嘲笑的对象,结果为嘲笑功能
public static function load($ID, $iConnectionType=NULL)
{
$oStatement = self::getLoadStatement($ID);
if ($oStatement->rowCount() == 0) {
throw new \ObjectNotFoundException($ID, 'Unable to load asset');
}
$oItem = self::loadFromStatement($oStatement);
$oItem->setConnectionType($iConnectionType);
return $oItem;
}
现在我想测试这个功能。
我至今是:
public function testLoad()
{
$oMockedPDOStatement = $this->getMockBuilder('\PDOStatement')
->setMethods(array('rowCount'))
->getMock();
$oMockedPDOStatement->expects($this->any())->method('rowCount')->will($this->returnValue(1));
$mockedObject = $this->getMockBuilder('AssetFactory')
->setMethods(array('loadFromStatement', 'getLoadStatement'))
->getMock();
$mockedObject::staticExpects($this->any())
->method('getLoadStatement')
->will($this->returnValue($oMockedPDOStatement));
$mockedObject::staticExpects($this->any())
->method('loadFromStatement')
->will($this->returnValue(new TestAsset()));
$this->assertInstanceOf('TestAsset', $mockedObject::load(5));
}
问题是运行这个测试,我得到以下故障时
1)AssetFactoryTest :: testLoad ObjectNotFoundException:无法加载资产
我认为oMockedPDOStatement
会照顾$oStatement->rowCount()
,但显然情况并非如此。什么是解决方案来正确测试这个?
谢谢。