我正在尝试为我的 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/