0
比方說,我有一個小的類來處理到MySQL數據庫的連接:測試方法行爲類似的getter/setter方法,但更象是工廠
class myDatabaseHandler{
private $_databases;
public function addDatabase($name, $dsn, $username, $password){
$this->_databases[$name] = array('dsn' => $dsn, 'username' => $username, 'password' => $password);
return true;
}
public function getDatabase($name){
$connectionInfo = $this->_databases[$name];
$database = new Database($connectionInfo['dsn'], $connectionInfo['username'], $connectionInfo['password']);
$database->doSomeSetup();
$database->attachMoreThings();
return $database;
}
}
我想單元測試這2種方法:
class myDatabaseHandlerTest extends \PHPUnit_Framework_TestCase
{
public function testAddDatabase(){
}
public function testGetDatabase(){
}
}
我如何測試這兩種方法?如果我addDatabase()
,最多它會返回一個Boolean
告訴我操作成功。由於它寫入私有屬性,我無法確認是否正確寫入了正確的數據。
我覺得利用getDatabase()
獲得一個數據庫對象返回和測試針對它是不完全理想的,因爲我需要公開dsn
,username
和password
只是用於測試的緣故。另外,Database
對象可能會將這些值修改爲它使用的格式,所以我需要存儲原始值以進行測試。
解決此問題的最佳方法是什麼?