現在、PHPUnit (CLI) を使用して API へのラッパーをテストしています。テストの性質上、同じコードを使用して 2 つの異なるユース ケースをテストできます。唯一の違いは、パラメーターとして API に送信する値です。
そこで、API で使用されるデフォルト値を使用して API をテストする DefaultTest クラスと、異なる値でパラメーター コンテナーをテストする 2 つ目の CustomTest(Case) クラスを作成することにしました。返されたデータの検証に使用されるすべての関数はどちらの場合も同等であるため、CustomTest は DefaultTest を継承します。
理解するためのコードを次に示します。
class DefaultTest extends PHPUnit_Framework_TestCase {
public function testAPIMethod()
{
$this->checkParameterContainer();
$this->validateResults();
}
public function checkParameterContainer()
{
/* Set up default parameter container */
}
public function validateResults()
{
/* Validate the results */
}
}
class CustomTest extends DefaultTest {
public function checkParameterContainer()
{
/* Set up custom parameter container */
}
public function validateResults()
{
parent::validateResult();
}
}
PHPUnit は子クラスを受け取り、testAPIMethod を実行し、CustomTest::checkParameterContainer() と DefaultTest::validateResults() を実行します。
ただし、DefaultTest::checkParameterContainer() が呼び出されないため、DefaultTest の testAPIMethod は実行されません。
どちらのクラスも完全に有効な TestCases であり、特殊化されていない場合は DefaultTest が正常に実行されます。
では、皆さんへの私の質問: それはなぜですか? ここで何かが恋しいですか?これは設計によるものですか?