rspec中的自定义路线

时间:2013-11-21 20:37:42

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

我在config/routes.rb中有一条如下所示的路线:

get '/auth/:provider/callback', to: 'oauths#create'

rake routes告诉我:

GET    /auth/:provider/callback(.:format)                   oauths#create

我正在编写一个开头的rspec测试:

describe OauthsController do
  describe '#create' do
    let(:request) { ->{post :create} }
    subject { request.call }

运行该测试时,我得到:

Failure/Error: let(:request) { ->{post :create} }
 ActionController::UrlGenerationError:
   No route matches {:controller=>"oauths", :action=>"create"}

如何告诉rspec正确的路线?

2 个答案:

答案 0 :(得分:1)

您需要:provider参数,需要提供一个:)

describe OauthsController do
  describe '#create' do
    let(:request) { ->{get( :create, :provider => 'some provider' )} }
    subject { request.call }
  end
end

正如@ peter-alfvin所说,这是一个GET而非POST。

答案 1 :(得分:0)

我尝试了上面的解决方案,但它没有用。我得到了:

ArgumentError:
   unknown keyword: provider

似乎RSpec现在需要params参数。相应的调用如下所示:

get(:index, params: { provider: 1 })

希望这有帮助!