1

我的路线中有这行代码

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"

为了使该测试通过,我在这里缺少什么?

4

1 回答 1

0

我相信您遇到的错误是因为 match 默认为 GET 请求,但您正在测试规范中的 POST 请求。您应该能够通过将路由更改为:

match '/auth/:provider/callback', to: 'sign_in#authenticate', via: :post

我个人的偏好是使用 post 方法而不是 match,它对我来说更好读:

post '/auth/:provider/callback' => 'sign_in#authenticate'
于 2013-02-15T23:39:22.540 回答