RSpecのlet関数を使ってコードの重複を排除する
Ruby on Rails チュートリアル、3章にしてテスト駆動の話が出てくるので初学者が恐れおののいている(だって罵詈雑言が飛んで来るじゃないですか)テストの書き方を学べてとても良いと思います。
というわけで、RSpecの重複を排除するlet関数を書いてみます。細かいことを抜きにすると、これは単なるメモで、コードの重複排除という言葉との親和性は高くてわかりやすいのではなかろうか。
it"should have the title 'Home'"do visit'/static_pages/home' page.shouldhave_selector('title',:text=>"Ruby on Rails Tutorial Sample App | Home") end it"should have the title 'Home'"do visit'/static_pages/home' page.shouldhave_selector('title',:text=>"Ruby on Rails Tutorial Sample App | Home") end
こんなコードを書くとどうしてもRuby on Rails Tutorial Sample App部分がやーな感じで見えてきます。なのでlet関数で掃除します。
let(:base_title){"Ruby on Rails Tutorial Sample App"}
it"should have the title 'Home'"do visit'/static_pages/home' page.shouldhave_selector('title',:text=>"#{base_title}| Home") end it"should have the title 'Home'"do visit'/static_pages/home' page.shouldhave_selector('title',:text=>"#{base_title}| Home") end
#{base_title}を呼び出して処理させます。#{base_title}ってメモを要所要所に貼りつけて重複を排除していきましょう。RSpecの他の使い方なんかはまたの機会にまとめてみます。