with test spectroscopy rails effective context ruby rspec

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