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

私の個人的な好みは、match の代わりに post メソッドを使用することです。

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