Rails アプリに「Photo」という RESTful リソースがあります。私はPaperclipを使用して写真のさまざまな「スタイル」(サムネイルなど) を提供しており、カスタム ルートを使用してそれらのスタイルに RESTful にアクセスしています。
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
それはうまくいっていますが、それがそのままであることを確認するためのテストを書きたいと思います。
Photo コントローラーの show アクションを呼び出す機能テストが既にあります (実際には scaffold によって生成されます)。
test "should show photo" do
get :show, :id => photos(:one).to_param
assert_response :success
end
URL「/photo/1」でのアクションの実行をテストします。ここで、URL "/photo/1/style/foo" の実行をテストしたいと思います。残念ながら、ActionController::TestCase をその URL にヒットさせることはできないようです。get メソッドは常にアクション/ID を必要とし、URL サフィックスを受け入れません。
カスタム URL をテストするにはどうすればよいですか?
アップデート
@fernybの回答を確認しているときに、同じrdocでこのスニペットを見つけました
テストでは、URL または名前付きルートを渡すだけで取得または投稿できます。def send_to_jail get '/jail' assert_response :success assert_template "jail/front" end
しかし、実際に試してみると、次のエラー メッセージが表示されます。
test "should get photo" do
get "/photos/1/style/original"
assert_equal( "image/jpeg", @response.content_type )
end
ActionController::RoutingError: No route matches {:action=>"/photos/1/style/original", :controller=>"photos"}
私は何か間違ったことをしているのだろうか。