Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails rspec测试嵌套的创建操作_Ruby On Rails_Testing_Rspec - Fatal编程技术网

Ruby on rails rails rspec测试嵌套的创建操作

Ruby on rails rails rspec测试嵌套的创建操作,ruby-on-rails,testing,rspec,Ruby On Rails,Testing,Rspec,有人能帮我弄清楚如何测试嵌套的创建操作吗 控制器.rb def create @itemline = V1::ItemLine.new(:net_price => params[:net_price]) @v1_product = @itemline.build_product(v1_product_params) @v1_product.save end def v1_product_params params.require(:v1_product).permit(:

有人能帮我弄清楚如何测试嵌套的创建操作吗

控制器.rb

def create
  @itemline = V1::ItemLine.new(:net_price => params[:net_price])
  @v1_product = @itemline.build_product(v1_product_params)
  @v1_product.save
end

def v1_product_params
  params.require(:v1_product).permit(:name, :net_price, :item_line => [:quantity, :net_price])
end
describe "with valid params" do
  it "creates a new V1::Product" do
    expect {
      post :create, :v1_product => {name: "test", net_price: 10, item_line_id: 1 }, token: @user.api_key.token
    }.to change(V1::Product, :count).by(1)
    expect(V1::Product.last.name).to eq "test"
    expect(V1::Product.last.net_price).to eq 10
    expect(V1::Product.last.item_line_id).to eq 1  #FAILS
  end
控制器规范rb

def create
  @itemline = V1::ItemLine.new(:net_price => params[:net_price])
  @v1_product = @itemline.build_product(v1_product_params)
  @v1_product.save
end

def v1_product_params
  params.require(:v1_product).permit(:name, :net_price, :item_line => [:quantity, :net_price])
end
describe "with valid params" do
  it "creates a new V1::Product" do
    expect {
      post :create, :v1_product => {name: "test", net_price: 10, item_line_id: 1 }, token: @user.api_key.token
    }.to change(V1::Product, :count).by(1)
    expect(V1::Product.last.name).to eq "test"
    expect(V1::Product.last.net_price).to eq 10
    expect(V1::Product.last.item_line_id).to eq 1  #FAILS
  end
它确实创建了产品,但没有构建V1::ItemLine.new。有人知道问题出在哪里吗


从您的代码中可以看出,谢谢您

@itemline = V1::ItemLine.new(:net_price => params[:net_price])
不正确,因为:净价嵌套在:v1\u产品哈希中

params.require(:v1_product).permit(:name, :net_price, :item_line => [:quantity, :net_price])
试一试


哦,不是这样的,我真的想通过那些参数。如果存在另一个,他们应该在build_产品线上超越它们。问题是,当前测试甚至没有创建项目行。哦,亲爱的,问题中有个错误。现在修好了。