我的 Rails 应用程序中有一个名为“Photo”的 RESTful 资源。我正在使用Paperclip为我的照片提供不同的“样式”(用于缩略图等),并且我正在使用自定义路由以 RESTful 方式访问这些样式:
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
这很好,但我想编写一个测试以确保它保持这种状态。
我已经有一个功能测试来调用 Photo 控制器的显示动作(实际上是由脚手架生成的):
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 方法总是需要一个 action/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"}
我想知道我是否做错了什么。