我在CakePHP中进行单元测试时遇到了一些问题,特别是在测试数据库插入/更新时。比方说,我有一个模型,它是这样的:测试驱动的开发 - 单元测试(在CakePHP中)
class User {
var $name = 'User';
function updatePassword($data) {
return $this->updateAll($data);
}
}
class UserTestCase {
function testUpdatePassword() {
$tmpData = array(
'User' => array(
'password' => sha1(uniqid('', true)) //dummy pass
);
$result = $this->User->updatePassword($tmpData);
$this->assertTrue($result);
}
}
我的问题是,在我的测试案例:
- 我必须提供将通常从形式 检索到的虚拟数据
- 虚拟数据的格式没有考虑到实际表单数据可能不正确的事实
- 我只测试更新是否成功:它似乎需要很多努力才能创建所有虚拟数据测试这个
这个例子似乎有点做作(I可以做在控制器的update
而不必创建例如一个额外的模型法),但主要的一点是,测试更新/插入时,该数据是伪数据和从表单中检索的数据可能会有所不同,但好处似乎并不高于成本。
您对TDD和单元测试的方法非常感谢,并且您一般会尝试给出什么样的覆盖范围会很好。
干杯
TDD对我
我建议您阅读一本关于此主题的书,例如:https://leanpub.com/cakephpunittesting/ – rrd 2013-04-13 12:24:57