如何为Zend Db Table Row编写单元测试用例

时间:2011-08-29 02:01:27

标签: phpunit zend-db zend-db-table

我正在尝试为我的Row类编写测试用例,我真的不知道这样做的正确方法是什么。

我见过很多使用模型和模型的例子。表,例如http://techportal.inviqa.com/2010/12/07/unit-testing-databases-with-zend-framework/

案例根本不使用Row,模型完全是关于getter和setter的。我不想重写像Zend_Db_Table_Row这样的东西可以自动完成。

我的行类是从Zend_Db_Table_Row扩展的,我认为没有必要编写像getter& amp; setter方法。

我的大多数行类都跟着

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract {

}

然后,为了获得更好的测试用例覆盖率,我应该为上面的类编写什么样的测试用例?

1 个答案:

答案 0 :(得分:3)

我认为您需要填充对象的属性(表的列名=>值)并运行自定义方法的测试。

Zend_Db_Table_Row_Abstract构造函数有一个参数 - 带有以下键的关联数组:

  • 数据
  • 存储
  • readOnly的

要构建对测试对象有用,您至少应使用“数据”条目。它也是关联数组。 “data”数组将列名称作为键,将行数据作为值。因此测试对象setUp可能如下所示:

   $this->object = new App_Table_Row_User(     
     array(
       'data' => array(  
         'username' => 'Jon Doe',  
         'password' => 'qwerty',  
         'email' => 'j.doe@example.com'  
       )
     ) 
   );

如果您需要与NULL返回对象类似的内容,则可以将fetchNew作为值传递到“数据”数组条目中。
如果您使用“save”或任何需要表模型的方法,我将建议使用mock / stub对象并将其作为构造函数中的“table”参数传递。您可以通过这种方式控制任何与Db相关的操作。

希望有帮助:)