目次
振舞駆動開発で使用する用語は、振る舞いを記述することを重視したものです。 これは、テスト駆動開発の用語が (多くのプログラマにとって直感的ではないために) 引き起こしていたさまざまな誤解を軽減させることでしょう。
スペック
とサンプル
のふたつの用語は、ほぼ同じ意味で使用しています。
「スペック」は、通常は単一の振る舞いを表します。これは
"なにかをしなければならない (it should do something)"
という単純な文で表すことができます。一方「サンプル」は、
PHPSpec のメソッド全体を表します。つまり「スペック」
を表すメソッドのコードのことです。たとえば以下の例でいうと、コードの中の
$this->spec()
で始まる行のことを「スペック」、
そしてそのスペックが満たす仕様を書いたパブリックメソッド全体のことを
「サンプル」と呼びます。
例 5.1. PHPSpec のサンプルメソッドで記述したスペック
public function itShouldHaveScoreOfZero()
{
$bowling = new Bowling;
$bowling->hit(0);
$this->spec($bowling->score)->should->be(0);
}
さらに難しい概念が「コンテキスト」 です。要するにコンテキストとは、 振る舞いを定義する際に一般に使用する条件の集まりのことです。 上に示したボウリングの例では、 まずは新しいゲームを開始するところからはじめると仮定しています。 これは、そのクラスのすべてのスペックがが共有するコンテキストとなります。 今後、ゲームが終了した状態だとかゲームの途中の状態なども用意することになるでしょう。 さまざまなコンテキストを用意することで、 条件によって振る舞いがどのように変化するのかを探りやすくなります。