Ich verwende moment.js, um den größten Teil meiner Datumslogik in einer Hilfedatei für meine React-Komponenten auszuführen, aber ich konnte nicht herausfinden, wie ich ein Datum in Jest a la verspotten kann sinon.useFakeTimers()
.
Die Jest-Dokumente sprechen nur über Timer-Funktionen wie setTimeout
, setInterval
etc , aber nicht Hilfe mit einem Datum festlegen und dann prüfen, ob meine Datumsfunktionen zu tun , was sie tun soll.
Hier sind einige meiner JS-Dateien:
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;
und hier ist, was ich mit Jest eingerichtet habe:
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);
});
});
});
Jetzt bestehen diese Tests, weil ich moment verwende und meine Funktionen moment verwenden, aber es scheint ein bisschen instabil zu sein und ich möchte das Datum auf eine feste Zeit für die Tests einstellen.
Irgendeine Idee, wie das erreicht werden könnte?
Date
like verwendet habevalueOf()
.