Rails明明存在的路由测试却找不到?

Rails test can't find route when it clearly exists?

好吧,我累了,而且是 rails 的新手,所以可能缺少一些非常基本的东西。无论如何,我刚刚开始一个新项目,正在为静态页面实现一个简单的控制器。写了一些单元测试只是为了确保我所有的路线都是正确的(目前只有 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 并且它有效。知道这里发生了什么吗?

控制器测试不测试路由,测试操作。你想要:

get 'terms_of_service'