我的 Rails 应用程序中有一个名为“Photo”的 RESTful 资源。我在用着回形针 http://www.thoughtbot.com/projects/paperclip为我的照片提供不同的“样式”(缩略图等),并且我使用自定义路由来以 REST 方式访问这些样式:
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
这工作正常,但我想编写一个测试以确保它保持这种状态。
我已经有一个功能测试来调用照片控制器的显示操作(实际上是由脚手架生成的):
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?
Update
在检查@fernyb的答案时,我发现了这个片段相同的 rdoc http://api.rubyonrails.org/classes/ActionController/Routing.html
在测试中,您可以简单地传递 URL 或命名路由来获取或发布。
def 发送到监狱
获取“/监狱”
断言_响应:成功
断言_模板“监狱/前线”
结尾
然而,当我真正try我收到一条错误消息:
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"}
我想知道我是否做错了什么。