Freeze / Stub Time in Jasmine tests

Usage

withTimeFrozenAt("2012-01-01", function(){
  it("is frozen", function(){
    // do something useful with time 🙂
  })
})

Code

var withTimeFrozenAt = function(time, fn){
  describe('with time frozen at ' + time, function() {
    var oldDate = Date;

    beforeEach( function() {
      Date = function() {
        return new oldDate(time);
      };
    });

    afterEach(function() {
      Date = oldDate;
    });

    fn();
  });
};