我在Rspec中编写了以下代码,以测试我的一个控制器中的更新函数,该函数更新表T
中的记录,其中有10个attrtbutes。在我的控制器的更新功能中,我已经通过params[:xyz][:id ], params[:xyz][:attr1] and so on.
接收了参数所以我调用函数更新来更新表T
的两个属性,在Rspec代码中如下:
it "should update the attributes properly" do
put :update, :id=>123, :xyz => {:id => 123, :attr1 => value of attr1, :attr2 => value of attr2}
end
此处我已将ID传递到外部,因为rake routes
我发现ID在更新功能的URL末尾显示为controller name/update/id
。在我的控制器的更新功能中,我通过以下代码
params[:xyz][:id] = params[:id] if params[:xyz] and not params[:xyz].key?(:id)
但这不起作用。它给出了以下错误。
NoMethodError:
undefined method `key?' for "123":String
所以,如果有人帮助我纠正这个问题,我将非常感激。谢谢。