React bileşenlerim için bir yardımcı dosyada tarih mantığımın çoğunu yapmak için moment.js kullanıyorum, ancak Jest a la'da bir tarihle nasıl dalga geçeceğimi bulamadım sinon.useFakeTimers()
.
Jest dokümanlar yalnızca gibi zamanlayıcı işlevleri hakkında konuşmak setTimeout
,setInterval
vb. ancak bir tarih belirlemeye ve ardından tarih işlevlerimin yapılması gereken şeyi yaptığını kontrol etmeye yardımcı olmaz.
JS dosyamdan bazıları:
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;
ve işte Jest kullanarak kurduğum şey:
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);
});
});
});
Şimdi bu testler geçiyor çünkü anı kullanıyorum ve fonksiyonlarım an kullanıyor ama biraz dengesiz görünüyor ve testler için tarihi sabit bir saate ayarlamak istiyorum.
Bunun nasıl başarılabileceğine dair bir fikriniz var mı?
Date
gibivalueOf()
.