title: How do I set a mock date in Jest?
body: <p>I'm using moment.js to do most of my date logic in a helper file for my React components but I haven't been able to figure out how to mock a date in Jest a la <code>sinon.useFakeTimers()</code>.</p>
  <p>The Jest docs only speak about timer functions like <code>setTimeout</code>, <code>setInterval</code> etc but don't help with setting a date and then checking that my date functions do what they're meant to do.</p>
  <p>Here is some of my JS file:</p>
  <pre class="lang-js prettyprint-override"><code>var moment = require('moment');
  
  var DateHelper = {
    
    DATE_FORMAT: 'MMMM D',
    API_DATE_FORMAT: 'YYYY-MM-DD',
    
    formatDate: function(date) {
      return date.format(this.DATE_FORMAT);
    },
  
    isDateToday: function(date) {
      return this.formatDate(date) === this.formatDate(moment());
    }
  };
  
  
  module.exports = DateHelper;
  </code></pre>
  <p>and here is what I've set up using Jest:</p>
  <pre class="lang-js prettyprint-override"><code>jest.dontMock('../../../dashboard/calendar/date-helper')
      .dontMock('moment');
  
  describe('DateHelper', function() {
    var DateHelper = require('../../../dashboard/calendar/date-helper'),
        moment = require('moment'),
        DATE_FORMAT = 'MMMM D';
  
    describe('formatDate', function() {
  
      it('should return the date formatted as DATE_FORMAT', function() {
        var unformattedDate = moment('2014-05-12T00:00:00.000Z'),
            formattedDate = DateHelper.formatDate(unformattedDate);
  
        expect(formattedDate).toEqual('May 12');
      });
  
    });
  
    describe('isDateToday', function() {
  
      it('should return true if the passed in date is today', function() {
        var today = moment();
  
        expect(DateHelper.isDateToday(today)).toEqual(true);
      });
      
    });
  
  });
  </code></pre>
  <p>Now these tests pass because I'm using moment and my functions use moment but it seems a bit unstable and I would like to set the date to a fixed time for the tests.</p>
  <p>Any idea on how that could be accomplished?</p>