मैं अपने रिएक्ट घटकों के लिए एक हेल्पर फ़ाइल में अपनी अधिकांश डेट लॉजिक करने के लिए moment.js का उपयोग कर रहा हूं, लेकिन मुझे यह पता नहीं चल पाया है कि जेस्ट ला में डेट कैसे मॉक की जाए sinon.useFakeTimers()
।
जेस्ट डॉक्स केवल टाइमर फ़ंक्शन जैसे आदि के बारे में बोलते हैं setTimeout
, setInterval
लेकिन किसी तिथि को सेट करने में मदद नहीं करते हैं और फिर यह जांचते हैं कि मेरे दिनांक फ़ंक्शन वे करने के लिए क्या कर रहे हैं।
यहाँ मेरी जेएस फाइल में से कुछ है:
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.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()
।