From: dezawa Date: 2015-07-04T16:44:05+09:00 Subject: [ruby-list:50200] Re: helperのテスト(ActionView::TestCase) ちと暇ができたのでじっくり試していていくつか解りました。 form_tag({ :action => action} ,opt) form_tag({ :action => action, :controller => controller} ,opt) このケースで action に :show , controllerに :weather を入れて試すと No route matches {:action=>"show"} No route matches {:action=>"show", :controller => "weather"} のエラーが出るのですが,config/routes.rb で明示的に get "/weather/show" => "weather#show" を定義すると(後者で)でなくなりました。 なぜ resources :weather では駄目なのかの疑問は残りますが、明示的に定義されているrouteでテストす れば良いので、できていなかったテストもできるようになりました > とりあえず不十分ですが解決しました。 >> class ActionButtomHelperTest < ActionView::TestCase >> include ActionButtonHelper >> >> must "form_buttom option なし" do >> assert_equal "", form_tag(:action => :index) >> end >> end > > でいけました。 > あ、いや > assert_equal "", form_tag('index') > でした。(むろん 期待値 "" では失敗しますが) > > 調べようとしていた ActionButtonHelper に > case action > when Symbol ; form_tag({ :action => action} ,opt) > when String ; form_tag(action ,opt) > end > というのがあって、その Symbol の所をコピペしてたんですが、 > ActionView::TestCase ではこちらはうまくいかなくて、Stringの > ケースでは通るようです。 > 今回のリファクタリングでは String だけでテストしてもまぁよさげ > なので、これで行きます。 > Symbolのケースでもうまくいくやり方は知っておきたいので、よろしくおねがい > します。 > >