describe Person do subject do Person.new( :family_name => "Aoki", :given_name => "Hanae", :age => 20 ) end it "#name is his name." do subject.name.should == "Aoki Hanae" end context "who became a adult" do it "#adult? is true" do subject.adult?.should be_true end end context "who did not become a adult" do subject do Person.new( :family_name => "Kaname", :given_name => "Madoka", :gender => 'female', :age => 14 ) end it "#adult? is false" do subject.adult?.should be_true end end end
なんかコード例を書いてるうちになにも変わったことしてないことに気がついた。
context Person do it "..." do # ... end context "..." do describe "#name" do it "is ..." do # ... end end end end
こういうコード書いてたのだけど、あるメソッドについてのブロックをとる describe と it がほぼ1対1で対応しているときは、describe をつかう必要はないよなあ、ということに気がついた。
たとえば、引数をとるメソッドの場合に describe でメソッドに対する記述をブロックで切って it で複数ケースについて記述する、というのが考えられそう。
最初のほうは書き方に悩んでなかなかコードが進まなかったんだけど、慣れてくると書きやすいもんですね。インターフェースをきちんと吟味するようになる、っていうのが大事。