
260
13
章 テスト:プログラムが正しく動作するようにする
$tip = 10;
$checkWithTax = restaurant_check($meal, $tax, $tip);
$checkWithoutTax = restaurant_check($meal, 0, $tip);
$expectedTax = $meal * ($tax / 100);
$this->assertEquals($checkWithTax, $checkWithoutTax + $expectedTax);
}
}
testTipIsNotOnTax()
メソッドは、2 通りの計算を行います。指定の税率での計算と税率
0
での計
算です。この 2 つの計算結果の差が予想される税額です。また、チップは同額になるでしょう。こ
のテストメソッドのアサーションは、税込みの額が税抜きの額と予想される税額の合計
に等しいか
を調べます。さらに、この関数が税額に対してチップを計算していないことも保証します。
13.3
テスト対象の分離
生産性の高いテストに重要な原則は、テストする対象をできるだけ分離することです。テスト関
数外には、内容や振る舞いがテスト関数の結果を変える可能性があるグローバル状態や寿命の長い
リソースがないことが理想です。テスト関数は、実行順にかかわらず同じ結果になるべきです。
例7-13 の
validate_form()
関数を考えてみましょう。
validate_form()
関数は、受信データを検
証する