[英]PHPUnit with Dependency Injection, testing the mock object using instanceof()
我已經解耦/使用依賴注入的抽象代碼。 但是,使用抽象代碼,我的數據庫類都返回一個PDO對象,因為我使用不同的類來處理不同的數據庫。
例如:
class MySQL extends \Database
{
...
public function CreateConnection
{
...
return $PDOConnection;
}
}
class Oracle extends \Database
{
...
public function CreateConnection
{
...
return $PDOConnection;
}
}
然后,數據庫類具有用於處理查詢,創建語句等的通用例程。這使主代碼數據庫不知道,因為可以在代碼中調用RunQuery,LimitResults等內部方法,並將其轉換為每個數據庫的正確代碼和格式。
我的問題現在出現在如何測試返回的對象上。 雖然我知道要模擬它進行測試,但我確實要確保可以檢查該類是否返回了正確的對象。 我可能想返回一個緩存對象或其他基於配置的內容,因為可能不使用PDO。
因此,我想檢查模擬對象是否正確。
public testPDOObjectReturned()
{
$MockObject = $this->getMock('\Database\MYSQL');
$MockObject->expects($this->any())
->method('CreateConnection');
$this->assertInstanceof('PDO', $MockObject->CreateConnection(MYSQL::UsePDO));
}
但是,我不知道如何將返回的對象設置為使用InstanceOf()測試的類/對象。
我收到一個錯誤:
1) lib\Database\PDO\MYSQL_Test::testCreateConnection
Failed asserting that null is an instance of class "PDO".
如何設置返回的類以測試它是正確的對象類型?
您的CreateConnection
存根應該返回一些內容。
$MockObject->expects($this->any())
->method('CreateConnection');
->will($this->returnValue($this->getMock('PDO')));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.