Rspec 嵌套控制器测试未将参数传递到我的控制器

Rspec nested controller test not passing params into my controller

我在通过 rspec 将我的参数传递到嵌套路由时遇到问题。我正在使用 Rails 5 和 Rspec 3.5

我的规格是这样的:

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

在我的控制器中,我的参数如下所示:

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

有谁知道为什么我的产品参数没有被传递?

第一个Hash是测试的params

试一试:

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