Tijd testen
Geplaatst door Michiel de Mare zo, 27 aug 2006 21:57:00 GMT
Stel dat je een unittest wil schrijven voor een module die data gebruikt. Je wilt zelf verschillende randvoorwaarden testen zonder de systeemtijd aan te passen. Hoe doe je dat? In Java moet je je gehele code-base doorspitten naar vormen van new Date()
en Calendar.getInstance()
en die vervangen door een of andere DateFactory, via welke je unittest de datum kan manipuleren.
In Ruby doe je dit:
def setup
class <<Time
attr_accessor :now
end
end
def teardown
class <<Time
alias_method :now, :new
end
end
def test_date
Time.now = CHRISTMAS_1997
assert MyClass.new.turkey?
Time.now = EC_FINAL_1988
assert !MyClass.new.turkey?
end