我在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正确的路线?
答案 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 })
希望这有帮助!