【问题标题】:How to write Unit Test case for Zend Db Table Row如何为 Zend Db 表行编写单元测试用例
【发布时间】:2011-08-29 02:01:26
【问题描述】:

我正在尝试为我的 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 和 setter 这样的测试用例。

而且我的大多数行类都如下所示

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract {

}

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

【问题讨论】:

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


    【解决方案1】:

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

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

    • 表格
    • 数据
    • 已存储
    • 只读

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

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

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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多