好吧,所以我很累,并且对铁杆很新,所以可能错过了一些非常基本的东西。无论如何,我刚刚开始了一个新项目并且正在为静态页面实现一个简单的控制器。写了一些单元测试,以确保我的所有路线都正确(到目前为止只有4个)。其中三个通过,但第四个给了我这个错误信息:
1) Error:
StaticPagesControllerTest#test_terms_of_service_should_return_success:
ActionController::UrlGenerationError: No route matches {:action=>"terms", :controller=>"static_pages
"}
test/controllers/static_pages_controller_test.rb:18:in `block in <class:StaticPagesControllerTes
t>'
它说无法找到路线。但是,当我耙路线时,它显然存在:
about GET /about(.:format) static_pages#about
contact GET /contact(.:format) static_pages#contact
privacy GET /privacy(.:format) static_pages#privacy
terms GET /terms(.:format) static_pages#terms_of_service
这是routes.rb的一部分:
get 'about' => 'static_pages#about'
get 'contact' => 'static_pages#contact'
get 'privacy' => 'static_pages#privacy'
get 'terms' => 'static_pages#terms_of_service'
以下是失败的测试代码:
test "terms_of_service should return success" do
get 'terms'
assert_response :success
assert_select 'title', "Terms Of Service"
end
我可以直接在浏览器中访问localhost:3000 / terms并且它可以工作。知道这里发生了什么吗?
答案 0 :(得分:5)
控制器测试不测试路由,测试操作。你想要:
get 'terms_of_service'