我有以下代碼,並測試我似乎無法通過。該代碼應自動鎖定24小時前完成的所有預訂。Rails Rspec測試失敗,當它在應用程序中工作
當我將pry放入測試並運行Booking.auto_lock_guests的第一行時,沒有任何反應。當我輸入booking_7並輸入Booking.auto_lock_guests之後,它將鎖定爲true。這是否與let的設置方式有關,它不會顯示在Booking.all中?或者是我編寫測試的方式?
任何幫助將不勝感激。
def self.auto_lock_guests
bookings = Booking.where(guests_completed: true, locked: false)
bookings.each do |booking|
next unless booking.guests_completed_at <= 1.day.ago
booking.locked = true
booking.save
end
end
context 'auto_lock_guests' do
let(:booking_6) { FactoryGirl.create(:booking, date: Date.today - 5.day, guests_completed: true, guests_completed_at: DateTime.now, locked: false)}
let(:booking_7) { FactoryGirl.create(:booking, date: Date.today - 5.day, guests_completed: true, guests_completed_at: DateTime.now - 3.day, locked: false)}
before do
Booking.auto_lock_guests
end
it 'should only lock bookings with a guests_completed date older than a day ago' do
expect(booking_7.locked).to eq(true)
expect(booking_6.locked).to eq(false)
end
end
我很困惑這是如何工作的,因爲我確信在調用Booking.auto_lock_guests時兩個預訂都沒有被創建,但是如果它可以工作,它就可以工作。 – Magnuss