Story→functional test→unit test

Jay Fields' Thoughts: Story 9: Display Customer Support Number

何かを実装するときには、まず最初におおまかなstoryを思い浮かべる。

storyを描いたら、コードはfunctional testから書く。もちろんunit testも書くのだが、まずはfunctional testからだ。
そうすることで細かな実装の詳細に惑わされることなく、より高い視点で物事をとらえることができる。
functional testはもちろんコケる。だが、それは次に何をすべきかを示している。

unit testはガンガンstubを使って書く。そうすることで外的要因に惑わされずにその部分のテストを書くことができる。しかも、unit testは常にfunctional testよりもはるかに速い。
たとえばファイルに依存している場合はFile.stubs(:read)のようにFile.readをstubででっちあげる。「File.stubs(:read).returns(ファイルの内容)」は慣用句だな。わざわざファイルを用意しなくてもいいから。

双方のテストが通ったら今度はテストの可読性を上げるためにリファクタリングだ。