1

RailsでAPIを作成していて、バージョン管理を使用してバージョンを処理しています。APIコントローラーをテストしたいのですが、有効なリクエストを作成できません。

私のコントローラー:

 class Api::V1::ItemsController < Api::V1::BaseController    
  def index
    render json:'anything'
  end
end

私のスペック:

describe Api::V1::ItemsController do
  describe "#create" do
    it "shows items" do
      get :index, format: :json
    end
  end
end

ルート.rb:

scope '/api' do
  api_version(:module => "Api::V1", :path => {:value => "v1"}, :default => true) do
    resources :items
  end
end

テストは何もチェックしません。それでも、エラーが発生します。

 Failure/Error: get :index, format: :json
 ActionController::RoutingError:
   No route matches {:format=>:json, :controller=>"api/v1/items", :action=>"index"}

リクエストのキーに問題があると思いますが:controller、修正方法がわかりません...

4

1 に答える 1

2

これを現地で再現することができました。これを機能させるには、これをコントローラー仕様ではなくリクエスト仕様に移動する必要があります。

# spec/requests/api/v1/items_controller_spec.rb
describe Api::V1::ItemsController do
  describe "#index" do
    it "shows items" do
      get '/api/v1/items.json'
      # assert something
    end
  end
end

バージョン管理者のドキュメントには、HTTPヘッダーを使用する場合、またはパラメーターのバージョン管理戦略をリクエストする場合にこれを行う必要があると記載されています(https://github.com/bploetz/versionist#a-note-about-testing-when-using-the-http-header-または-request-parameter-strategies)が、ここでは明らかにそうではありません。すべてのバージョン管理戦略でこれを行う必要があることをドキュメントで明確にするために、問題を提出します。

于 2013-01-29T22:39:29.830 に答える