J'essaie de stub Time.now dans RSpec comme suit:
it "should set the date to the current date" do
@time_now = Time.now
Time.stub!(:now).and_return(@time_now)
@thing.capture_item("description")
expect(@thing.items[0].date_captured).to eq(@time_now)
end
Je reçois le message d'erreur suivant:
Failure/Error: Time.stub!(:now).and_return(@time_now)
NoMethodError:
undefined method `stub!' for Time:Class
Une idée pourquoi cela pourrait se produire?
Selon votre version de RSpec, vous voudrez peut-être utiliser la syntaxe la plus récente:
allow(Time).to receive(:now).and_return(@time_now)
Voir RSpec Mocks 3.3
Vous pouvez toujours utiliser timecop :
@time_now = Time.now
Timecop.freeze(@time_now) do
@thing.capture_item("description")
expect(@thing.items[0].date_captured).to eq(@time_now)
end
travel_to
from ActiveSupport
pourrait mieux servir cet objectif et ressembler à ceci:
def test_date
travel_to Time.zone.parse('1970-01-01')
verify
travel_back
end