sto spec'ing un ambito in un 3.0 app Rails come segue:Utilizzando Timecop gioiello per scopi
class DrawingList < ActiveRecord::Base
scope :active_drawings, where('start_date <= ? AND end_date >= ?', Date.today, Date.today)
end
Nella mia spec, voglio fare:
before do
@list = DrawingList.create #things that include begin and end dates
end
it "doesn't find an active drawing if they are out of range" do
pending "really need to figure out how to work timecop in the presence of scopes"
Timecop.travel(2.days)
puts Date.today.to_s
DrawingList.active_drawings.first.should be_nil
end
come si potrebbe immagina, le mette mostra davvero che Date.today è due giorni quindi. Tuttavia, l'ambito viene valutato in un contesto diverso, quindi utilizza il vecchio "oggi". Come si ottiene oggi una valutazione in un contesto che può influenzare Timecop.
Grazie!
Buona risposta a una buona domanda. –
Questa è una questione delicata da cogliere! Grazie. Sono così felice che ora sono consapevole di questo comportamento. –