Rspec与我的路线不匹配

时间:2016-11-16 13:57:16

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

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

运行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"}

我知道问题是愚蠢的,但我无法看到它。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

使用:

post 'bar'

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

答案 1 :(得分:1)

在控制器测试中,您应该使用实际操作名称bar。路由详细信息不是控制器的业务。这是一个集中测试,所以只测试控制器逻辑。

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