トップ «前の日記(2007-09-18(Tue)) 最新 次の日記(2007-09-21(Fri))» 編集

ぽっぺん日記@karashi.org


2007-09-20(Thu) [長年日記]

晴れ

_ HelperのRSpecテストでちょっとハマった

RSpecでHelperのテストを書いていて、ちょっとハマったのでメモ。

テストしようと思ったのは、こんなコード。

application_helper.rb:

def show_link(string, options = {})
 link_to(string, { :action => "foobaa" }.merge(options))
end

RSpecのテストには、こんなコードを書いた。

application_helper_spec.rb:

it "show_link should return link" do
  show_link("hoge", :key=>'abc').should =~ /^<a href=.*key=abc.*>.*<\/a>$/i
end

ホントは正規表現をもっと厳密に書かないとテストにならないんだけど、ご愛嬌。

ここまで書いて、テストを走らせたところ(と言うか、ホントはautotestで自動だけど)、

Need controller and action!

と怒られ、テストが失敗する。あれー? と思いつつ、色々といじってみるがダメ。

で、エラーの文面を読み直し、もしかしてと思いついて、application_helper.rbをこんな感じに書き直してみたら、テストが通るようになった。

def show_link(string, options = {})
 link_to(string, { :controller => @controller.controller_name, :action => "foobaa" }.merge(options))
end

なるほど。エラーで言っている通り、controllerが指定されていないとダメなんだね。同一controllerの場合には、actionだけ書いて、controllerは書かないようにしていたので、まったく思いもよらなかった。

たぶん、これって常識なんだけだろうけども、もしかしたら役に立つ人もいるかも知れないので書いておきます。

Tags: Rails rspec | | | | | | | Permalink
[]
本日のPingbacks(全0件)

トップ «前の日記(2007-09-18(Tue)) 最新 次の日記(2007-09-21(Fri))» 編集