Saya menggunakan moment.js untuk melakukan sebagian besar logika tanggal saya di file helper untuk komponen React saya, tetapi saya belum dapat mengetahui cara membuat tiruan kencan di Jest a la sinon.useFakeTimers()
.
Dokumen Jest hanya berbicara tentang fungsi pengatur waktu seperti setTimeout
, setInterval
dll tetapi tidak membantu dengan mengatur tanggal dan kemudian memeriksa bahwa fungsi tanggal saya melakukan apa yang seharusnya mereka lakukan.
Berikut beberapa file JS saya:
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;
dan inilah yang telah saya siapkan menggunakan Jest:
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);
});
});
});
Sekarang tes ini lulus karena saya menggunakan momen dan fungsi saya menggunakan momen tetapi tampaknya agak tidak stabil dan saya ingin menyetel tanggal ke waktu tetap untuk pengujian.
Ada gagasan tentang bagaimana itu bisa dicapai?
Date
suka lainnyavalueOf()
.