0
我的控制器操作在开发环境中执行我想要的操作,并且当我在测试环境中使用byebug按照流程操作时 - 操作按照我想要的进行,但通过控制器操作中的update_column
更新属性 - 当我回到我的规范时不会持续。请参阅下面我已经尝试的上下文。Rspec/Rails4,对象属性更新没有持续在控制器规格?
控制器动作: 正如我上面所述,这个动作实际上确实按预期更新了事件列。
def swap
# TODO
# Maybe change :event_ids to 'swap_event_ids?'
if params[:event_ids]
@swapped_events = params[:event_ids].map{|id| Event.find(id.to_i)}
byebug
@swapped_events.each do |event|
event.update_columns(driver_id: nil)
event.update_columns(swap_requester_id: current_user.id)
event.save
end
byebug
flash[:notice] = "Successfully added #{@swapped_events.length} events to swap stack"
redirect_to(:back)
else
flash[:alert] = "Please select one of your events before clicking Swap!"
redirect_to(:back)
end
end
该规范:在返回规范后,在发布请求后,更新的列没有持续。 I.E,event.driver_id列仍然设置为subject.current_user.id。
describe 'POST #swap' do
login_user
before do
request.env['HTTP_REFERER'] = 'http://localhost:3000'
end
it '#swap changes driver_id to nil for selected swap request events' do
events = FactoryGirl.create_list(:event, 2, driver_id: subject.current_user.id)
post :swap, event_ids: ["#{events[0].id}", "#{events[1].id}"]
expect(events.all?{|event| event.driver == nil}).to eq true
end
end
我不知道我是缺少在这里..
谢谢你,作品! – matthewalexander