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
をテストする方法がわかりません。不要なコードを呼び出さずに。私はまた、いくつかの自動読み込みをしていますので、親にsaveを呼び出すと、実際にテストデータベースに保存しようとします。私はRegularModel
を私がBaseModel
をテストしているときにテストしているときに、実際にデータベースに書き込むかどうか気にしないので、これをむしろ嘲笑したいと思います。あるいは、私はこれについてすべて間違っていると思いますか?このような状況をテストするときは、何をお勧めしますか?