2017-04-21 9 views
0

rspecを通じてネストされたルートにパラメータを渡すときに問題が発生しています。Rspecネストされたコントローラのテストでパラメータがコントローラに渡されない

require 'rails_helper' 

describe "POST /api/v1/companies/:company_id/products.json", type: :controller do 
    let!(:user) { create(:company_user, address: create(:address)) } 
    let!(:company) { create(:company, company_user: user) } 
    let!(:product) { create(:product) } 
    let!(:params) { FactoryGirl.attributes_for(:product) } 

    before do 
    @controller = Api::V1::ProductsController.new 
    end 

    context "company_user signed in" do  
    before do 
     auth_headers = user.create_new_auth_token 
     request.headers.merge!(auth_headers)  
     sign_in user 
    end 

    it 'creates a new product' do 
     post :create, { company_id: company.id }, { params: {product: product_params} } 

     expect(response.status).to eq(200) 
     expect(Product.count).to eq(1) 
    end 
    end 

end 

、私のコントローラで私のparamsは、次のようになります。:

[1] pry(#<Api::V1::ProductsController>)> params 
=> <ActionController::Parameters {"company_id"=>"1", "controller"=>"api/v1/products", "action"=>"create"} permitted: false> 

なぜ私の製品のparams誰もが知っています、私は私の仕様は次のようになりますRailsの5とRSpecの3.5

を使用しています渡されていないのですか?

答えて

2

最初Hashは、テストのためにparamsです:

それを試してみてください。

post :create, { company_id: company.id, product: product_params }

関連する問題