phpunit - 如何为 Zend Db 表行编写单元测试用例

标签 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 和 setter 这样的测试用例。

我的大多数行类如下

class App_Table_Row_User extends Zend_Db_Table_Row_Abstract {

}

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

最佳答案

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

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

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

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

   $this->object = new App_Table_Row_User(     
     array(
       'data' => array(  
         'username' => 'Jon Doe',  
         'password' => 'qwerty',  
         'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="204a0e444f45604558414d504c450e434f4d" rel="noreferrer noopener nofollow">[email protected]</a>'  
       )
     ) 
   );

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

希望有帮助:)

关于phpunit - 如何为 Zend Db 表行编写单元测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225402/

相关文章:

phpunit - PhpStorm: "Run with coverage"结果为 "Cannot load Xdebug - extension already loaded"

PHPunit 出错并出现异常 : Serialization of 'SplFileInfo' is not allowed even though it shouldn't

php - 通过 Composer 安装使用 PHP 构建工具会导致许多依赖项

php - 如何在 ZF2 中为使用 Sql 对象创建的 Sql 语句的结果集设置数组对象原型(prototype)

mysql - Zend Framework 和 Mysql - 非常慢

php - PHPUnit 测试可以预料到 fatal error 吗?

php - Zend Framework DB_TABLE 中的 mySQL 语句

mysql - 将 mySQL 查询转换为 Zend FrameWork 查询的工具

php - 如何在 Zend Framework 中使用 Join

php - 如何将嵌套 sql 查询转换为 zend 1.12 格式