1

Rails 3.2アプリケーションでrspecを使用して、ルートの単純なgetリクエストをテストしています。すべてがgetリクエストであり、すべてがビューの名前に似た異なるアクション名を持っているため、getリクエストごとに異なるテストを手動で作成することは非常に繰り返しになります。

代わりに、私は次のようなものを考え出したかった:

%(action_1 action_2 action_3 action_4).each do |action|
    it "routes to the #{action} page" do
        get("liver_diseases#{action}_path").should route_to("liver_diseases##{action}")
    end
end

この擬似コードでは失敗します。get("liver_diseases_#{action}_path") つまり、動的なメソッド呼び出しを行う必要がありますが、私が見つけたものには.send(:method_name)、クラス名を知る必要があることが含まれます。そして、私はそれを見つけることができませんでした。

このメソッド呼び出しを機能させるには何をする必要がありますか?

4

1 に答える 1

1

これには.send(:method_name)が含まれ、クラス名を知る必要があります

受信機がない場合は、常にselfです。コントローラの例のコンテキストでは、selfはコントローラインスタンスである必要があります。したがって、次の方法でそのパスを取得できるはずです。

send "liver_diseases_#{action}_path"

これは次と同等である必要があります:

controller.send "liver_diseases_#{action}_path"
于 2013-01-23T17:18:12.513 に答える