0

JSON を POST 経由でメンバー ルート エンドポイントに送信する rspec テストを作成しています。しかし、そうすると「ルートが一致しません」というエラーが表示されます。このエンドポイントがメンバー ルートであるため、何か追加する必要があるかどうかはわかりません。または、JSON を送信しているため、HTTP 要求ヘッダーが不足しているだけです。助けてください。

これは私が持っているものです:

仕様:

describe "#endpoint" do
 context "type 1" do

  before(:each) do
    post :create, @params.merge(:abc => {:first_user_id => @user1.id, :second_user_id => @user2.id})
    @mashup = assigns(:mashup)
  end

  it "should post the results successfully" do

    units = [...]
    users = [...]
    params = @params.merge(:mashup_outcome => {:status => "success", :assetName => "MashupAssetName", :winningUserId => @user1.id}, :mashup_id => @mashup.id, :version_number => 1, :user_id => @user1.id, :id => @mashup.id ,:users => :users).to_json

     @request.env["CONTENT_TYPE"] = "application/json"

     #had to have a param key for my params below in order to bypass the NoMethodError
     #In actual request body, it's just a JSON
     post :over, :mashup => params


    @mashups.in_progress.should be_false
  end
end

context "type 2" do

  before(:each) do
     ...
  end

  it "should post the results correctly" do 
      ...
  end

end

ルート:

namespace :mashup do
  resources :mashups do
    member do
      post :endpoint
    end
end

コントローラ:

def endpoint
    if @mashup.complete_mashup(params)
      render :json => api_success(@mashup.dpoints)
    else
      render :json => api_error({})
    end
  end

エラー:

Failure/Error: post :endpoint, :mashup => params
 ActionController::RoutingError:
   No route matches {:mashup => "{...<JSON>...}", :controller => "api/mashup/mashups", :action => "endpoint"}
4

0 に答える 0