【发布时间】:2013-01-08 12:25:54
【问题描述】:
我对 rspec 和 factory girl 很陌生,遇到了一个奇怪的问题。我在控制器中有一个动作,例如:
def update
@property = current_user.properties.find params[:fee][:property_id]
@fee = @property.fees.find(params[:id])
if @fee.update_attributes(params[:fee])
redirect_to fee_path(:prop=>@property), :notice => "fee updated successfully!"
else
render action: "edit"
end
end
和一个测试示例:
describe "with valid params" do
before do
@property = FactoryGirl.create(:property)
@property.users << subject.current_user
end
it "updates the requested fee" do
fee = @property.fees.create! valid_attributes
Fee.any_instance.should_receive(:update_attributes).with({ "name" => "MyString","property_id"=>@property.id})
put :update, {:id => fee.to_param, :fee => { "name" => "MyString","property_id"=>@property.id }}, valid_session
end
end
但我收到一个奇怪的错误:
#<Fee:0xb8c4884> received :update_attributes with unexpected arguments
expected: ({"name"=>"MyString", "property_id"=>"50ec0b3fa7c320ee53000002"})
got: ({"name"=>"MyString", "property_id"=>"50ec0b3fa7c320ee53000002"})
如果有人能提供帮助,我将非常感激。
【问题讨论】:
-
给出你的模型结构,费用和财产之间的关系是has_many还是embeds_many?
-
如果将参数哈希键从字符串更改为符号是否有效?
标签: ruby-on-rails rspec mongoid factory-bot