내 React 구성 요소에 대한 도우미 파일에서 대부분의 날짜 논리를 수행하기 위해 moment.js를 사용하고 있지만 Jest a la에서 날짜를 조롱하는 방법을 알아낼 수 없었습니다 sinon.useFakeTimers()
.
Jest 문서는 setTimeout
, setInterval
등과 같은 타이머 기능에 대해서만 설명 하지만 날짜를 설정 한 다음 내 날짜 함수가 의도 한대로 작동하는지 확인하는 데 도움이되지 않습니다.
다음은 내 JS 파일 중 일부입니다.
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;
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);
});
});
});
이제 모멘트를 사용하고 내 함수가 모멘트를 사용하기 때문에 이러한 테스트는 통과했지만 약간 불안정 해 보이며 테스트를 위해 날짜를 고정 시간으로 설정하고 싶습니다.
그것이 어떻게 성취 될 수 있는지에 대한 아이디어가 있습니까?
Date
같은 다른 기능을 사용했기 때문에 훌륭하게 작동했습니다valueOf()
.