[ruby-list:50200] Re: helperのテスト(ActionView::TestCase)
From:
dezawa <dezawa@...>
Date:
2015-07-04 07:44:05 UTC
List:
ruby-list #50200
ちと暇ができたのでじっくり試していていくつか解りました。
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のケースでもうまくいくやり方は知っておきたいので、よろしくおねがい
> します。
>
>