Is mock Object the best way to test scheduling system with a lot of Time.now?

Hi everyone,
    I hope everyone is doing well.
   I am working on a scheduling system that dealing with Time.now a
lot. It is getting tricky to write test code for the function.

   suppose a function in a model:

   def expired?
        self.expire_time <= Time.now
   end

   i was wondering what is the best way to test it. Or should I say
that I should design the function in the following way (more
testable?)

    def expired?(time)
         self.expire_time <= time
    end

    then I should use it in the following way : object.expired?
(Time.now)
    it is also easier to write test code.

    Any comments and suggestions will be greatly appreciated :slight_smile:

thanks
Kevin

You could use Mocha (http://mocha.rubyforge.org) to temporarily stub
the Time.now method for the duration of an individual test. Something
like this...

require 'mocha'

def test_me
specific_time = Time.parse('2007-01-01 06:30:00')
Time.stubs(:now).returns(specified_time)

Time.now # => Mon Jan 01 06:30:00 +0000 2007
end

Wow~~
This is genius ~~ how simply the dirty work could be done !

Great thanks to James :slight_smile: