2011-08-29 78 views
1

我正在嘗試爲我的Row類編寫測試用例,而且我真的沒有什麼正確的方法來做到這一點。如何編寫Zend Db錶行的單元測試用例

我見過很多示例使用模型&表,例如http://techportal.inviqa.com/2010/12/07/unit-testing-databases-with-zend-framework/

該案例根本不使用Row,模型全部是關於getter和setter的。我不想重寫這樣的東西,因爲Zend_Db_Table_Row可以自動完成。

我的行類是從Zend_Db_Table_Row擴展的,我不認爲有必要編寫像getters & setter這樣的測試用例。

而且大部分我排類是像下面

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract { 

} 

然後,爲了獲得更好的測試覆蓋率的情況下,我應該寫什麼樣的測試用例像上面一類?

回答

2

我認爲你需要填充對象的屬性(表的列名=>值)併爲你的自定義方法運行測試。

Zend_Db_Table_Row_Abstract構造函數有一個參數 - 用下列鍵關聯數組:

  • 數據
  • 存儲
  • readOnly的

要建立測試對象,你應該使用有用至少是「數據」條目。它也是關聯數組。 「data」數組具有列名作爲鍵和行數據作爲值。因此,測試對象設置可能如下所示:

$this->object = new App_Table_Row_User(  
    array(
     'data' => array( 
     'username' => 'Jon Doe', 
     'password' => 'qwerty', 
     'email' => '[email protected]' 
     ) 
    ) 
    ); 

您可以通過NULL在「數據」數組項值,如果你需要類似fetchNew返回對象的東西。
如果您使用「save」或任何需要表模型的方法,我會建議使用mock/stub對象並將其作爲構造函數中的「table」參數傳遞。您可以用這種方式控制任何與Db相關的操作。

希望能幫到:)

相關問題