2010-04-13 74 views
1

我测试了一个名为路线如何测试命名路线?

1) Failure: 
test_settings_route(ProjectsControllerTest) [/test/functional/projects_controller_test.rb:15]: 
The generated path <"/projects/1/edit"> did not match <"/projects/1/settings"> 

这里的测试时,遇到下列错误,那么我把我的路线文件

# projects_controller_test.rb 
require 'test_helper' 
class ProjectsControllerTest < ActionController::TestCase 
def test_settings_route 
    assert_routing '/projects/1/settings', :controller => 'projects', :action => 'edit', :id => '1' 
end 

# routes.rb 
map.settings '/projects/:id/settings', :controller => 'projects', :action => 'edit' 

随着该条目在我的路线文件,我的应用程序的行为与预期 - 即当/ projects/1/settings被请求时渲染项目的编辑模板 - 但我不明白如何让我的测试绿色。

我也试着用同样的结果

should_route :get, "/projects/1/settings", :controller => 'projects', :action => 'edit', :id => '1' 
+0

根据RailsGuide on routing“当请求进来时,routes.rb文件从上到下被处理。请求将被分派到第一个匹配的路由。”因此,您可能希望在更一般的RESTful路由之前保留更具体的命名路由。 – Corey 2010-04-14 18:28:07

回答

0

map.resources :projects在routes.rb中我命名的路由上述早该宏。将我命名的路线移到顶部修复了我的测试。