testunit - How to test simple ruby method, with timing and config dependencies -
i have method:
def self.should_restart? if konfig.get(:auto_restart_time).present? time.now>=time.parse(konfig.get(:auto_restart_time)) && utils.uptime_in_minutes>780 end end
in regular ruby (not rails) how go testing this? monkeypatch konfig , utils return want seems soooo ugly.
you may able use timecop
part of solution (which scores highly me "best-named gem, ever"). simple use, , patches sources of time data in sync, if example utils
module uses standard methods assess time, should have same concept of "now" time.now
shows.
note won't work if utils
making call external api on process, in case should stub return uptime values needed in test assertions.
the following rspec
snippet way of example, , making assumptions have available (such module under test being called server
)
describe "#should_restart?" before :each timecop.travel( time.parse("2013-08-01t12:00:00") ) server.start # guess # using `mocha` gem here konfig.expect(:get).with(:auto_restart_time).returns( "18:00:00" ) end after :each timecop.return end "should false if server has been started" server.should_restart?.should be_false end "should false before cutoff time" timecop.travel( time.parse("2013-08-02t16:00:00") ) server.should_restart?.should be_false end "should true when server has been while, after cutoff time" timecop.travel( time.parse("2013-08-02t18:05:00") ) server.should_restart?.should be_true end end
Comments
Post a Comment