ruby - test - rspec rails 5
Stubbing Time.now con RSpec (3)
Dependiendo de su versión de RSpec, es posible que desee utilizar la sintaxis más nueva:
allow(Time).to receive(:now).and_return(@time_now)
Ver RSpec Mocks 3.3
Estoy tratando de tachar Time.now en RSpec de la siguiente manera:
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
Recibo el siguiente error al hacerlo:
Failure/Error: Time.stub!(:now).and_return(@time_now)
NoMethodError:
undefined method `stub!'' for Time:Class
¿Alguna idea de por qué esto podría estar pasando?
Siempre puedes usar 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
de ActiveSupport
podría servir mejor al propósito y podría tener el siguiente aspecto:
def test_date
travel_to Time.zone.parse(''1970-01-01'')
verify
travel_back
end