Rspec意外的keyword_end,期待'}'

时间:2015-09-05 10:50:47

标签: ruby-on-rails ruby rspec

工作正常:

post :create, params_with_product

它也是:

 put :update, id:@item, item: params_with_product

但是当我这样做时,语法错误语法错误unexpected keyword_end, expecting '}'失败了:

put :update, :id => @item.id, params_with_product

其中:

let(params_with_product) { item: FactoryGirl.attributes_for(:item_without_product) }

2 个答案:

答案 0 :(得分:3)

尝试put :update, { :id => @item.id }.merge(params_with_product)

答案 1 :(得分:1)

添加djaszczurowski的答案是正确的。

对于request spec,您必须发送params哈希(key: value对)作为请求的参数,其中value可以是哈希本身。因此,postput方法可以将params哈希作为参数。

在你的第一个案例中,它有效:

post :create, params_with_product

因为params_with_product是哈希(有效key: value对)

但是,在第二种情况下:

put :update, :id => @item.id, params_with_product

它失败了,因为第二个参数没有任何key。 因此,您可以将:id => @item.idparams_with_product合并,再次返回哈希值(有效key: value对)并正常工作。