我开始使用PHPUnit测试我的PHP应用程序。我明白,单元测试独立运行非常重要,所以当测试失败时您知道应该看哪里。有一件事我很难理解,就是如何从父母身上分离测试子类。例如,我的大多数模型都扩展了一个“基本模型”,它具有模型应具有的大部分功能。单元测试:如何独立于父类测试子类?
<?php
class BaseModel
{
public function save($data) {
// write $data to the database
$dbAdapter->save($data);
}
}
class RegularModel extends BaseModel
{
public function save($data) {
// clean up $data before passing it to parent
if (isset($data['foo'])) {
unset($data['foo']);
$data['bar'] = 'foo';
}
parent::save($data);
}
}
# Unit Test
class RegularModelTest extends PHPUnit_Framework_TestCase
{
public function testSaveMethodCallsParent() {
$data = array('foo' => 'yes');
$model = new RegularModel();
$model->save($data);
// assert parent received data correctly
}
}
我不知道如何测试我的RegularModel
而无需调用一堆不必要的代码。我也在做一些自动加载,所以当它调用父对象时,它实际上会尝试保存到测试数据库。我宁愿嘲笑这一点,因为当我测试我的BaseModel
时,当我测试我的RegularModel
时,我不关心它是否实际写入数据库。或者我在想这一切都是错误的?当谈到测试这种情况时,你推荐什么?