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