0
我有一个名为queue_item的简单模型,它具有一个名为“list_order”的属性,它允许用户更改页面上项目外观的顺序。我有一个简单的rSpec测试,用于验证发布到控制器操作后“list_order”属性是否更改。我测试的不断失败,出现此错误消息:rSpec中定义的变量不变
QueueItemsController POST sort_list_order user is authenticated input is valid Assigns list_order
Failure/Error: expect(item1.list_order).to eq(3)
expected: 3
got: 1
这是很奇怪的我,因为当我把控制器动作binding.pry我的代码更改“list_order”的属性后,它显示了所有的queue_item对象已成功更新。此外,UI功能按预期工作。为什么rSpec测试不会反映控制器操作对对象的更改?
控制器动作:
def sort_list_order
counter = 1
array = params[:queue_items].sort_by{ |k,v| v }
array.each do |k,v|
item = QueueItem.find(k.to_i)
puts item.list_order
item.update(list_order:counter)
puts item.list_order
counter +=1
end
binding.pry
末
测试:
it "Assigns list_order" do
item1 = Fabricate(:queue_item)
item2 = Fabricate(:queue_item)
item3 = Fabricate(:queue_item)
post :sort_list_order, queue_items:{item1.id=>3 ,item2.id =>2 ,item3.id => 1 }
expect(item1.list_order).to eq(3)
expect(item2.list_order).to eq(2)
expect(item3.list_order).to eq(1)
end