2014-02-24 43 views
0

在這個函數中,我想模擬一個PDOStatement作爲參數給我的函數loadFromStatement。Mockobject不返回基類的實例

/** 
* @expectedException ObjectNotFoundException 
* @expectedExceptionMessage Unable to load site 
*/ 
public function testLoadFromStatementThrowsObjectNotFoundException() 
{ 
    $oMockedPDOStatement = $this->getMockBuilder('\PDOStatement') 
           ->setMethods('rowCount') 
           ->getMock(); 
    $oMockedPDOStatement->expects($this->any())->method('rowCount')->will($this->returnValue(0)); 
    SubSiteFactory::loadFromStatement($oMockedPDOStatement); 
} 

這是函數loadFromStatement的簽名:

public static function loadFromStatement(\PDOStatement $oStatement, $aPrefixMap = NULL, $iIndex = NULL) 

然而oMockedPDOStatement返回MockObject繼而產生一個IllegalArgumentException。

爲什麼oMockedPDOStatement不能返回PDO的實例?

+0

你有沒有試過不'mockBuilder'?它返回所需類的實例? –

+0

謝謝你和我一起思考。我找到了解決方案。見下面我的答案。 – sanders

回答

0

好的。這是哪裏出了問題:

->setMethods('rowCount')應該->setMethods(array('rowCount'))