我的路线中有这行代码
namespace :api, defaults: {format: 'json'} do
namespace :v1 do
match '/auth/:provider/callback', to: 'sign_in#authenticate'
end
end
我的测试
require 'spec_helper'
describe "Routing" do
it "should route to sign_in#authenticate" do
expect(post: 'api/v1/auth/:provider/callback').to route_to({ controller: 'api/v1/sign_in', action: 'authenticate', format: 'json' })
end
end
然而,无论我做什么,我都会不断收到错误
No route matches "/api/v1/auth/:provider/callback"
为了让这个测试通过,我在这里缺少什么?
答案 0 :(得分:0)
我相信您收到的错误是因为匹配默认为GET请求,但您正在测试规范中的POST请求。您应该能够通过将路线更改为:
来解决问题match '/auth/:provider/callback', to: 'sign_in#authenticate', via: :post
我个人的偏好是使用post方法而不是匹配,它只是对我更好:
post '/auth/:provider/callback' => 'sign_in#authenticate'