【问题标题】:Rspec not matching my routeRspec 与我的路线不匹配
【发布时间】:2016-11-16 13:57:15
【问题描述】:

我的routes.rb 中有post '/foo/bar', to: 'api/v1/things#bar'

运行rails routes 返回

foo_bar POST /foo/bar(.:format) api/v1/things#bar

我正在尝试使用post '/foo/bar' 对其进行测试,但我得到了

No route matches {:action=>"/foo/bar", :controller=>"api/v1/things"}

我知道这个问题很愚蠢,但我看不到它。有什么想法吗?

【问题讨论】:

  • 这是哪种测试?控制器测试?
  • 是的,控制器测试。

标签: ruby-on-rails ruby rspec ruby-on-rails-5


【解决方案1】:

当您运行控制器规范时,路由不是问题。

用途:

post 'bar'

这个测试很可能有describe API::V1:Things do,它告诉RSpec使用哪个控制器。

【讨论】:

    【解决方案2】:

    在控制器测试中,您应该使用实际操作名称bar。路由细节与控制器无关。这是一个重点测试,所以只测试控制器逻辑。

    另一方面,集成测试是另一回事。根据定义,它们测试整个堆栈(因此,它们也被称为“端到端测试”)。您应该可以在功能规范中发布到/foo/bar,因为请求将通过路由器。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多