我有一个功能,我尝试使用function makeRange(timeagoMinutes) {
var endDate = moment().toISOString();
var startDate = moment().subtract(timeagoMinutes, 'm').toISOString();
return startDate + ',' + endDate;
}
的Mocha进行单元测试。
moment
这是我到目前为止所做的,但我无法弄清楚如何处理makeRange(40)
。如果我调用moment().toISOString()
并运行测试,则每次字符串都不同。
如何伪造当前时间(即var rewire = require('rewire');
var controller = rewire('../thecontroller.js');
var moment = require('moment');
describe.only('makeRange', function() {
var makeRange;
beforeEach(function() {
makeRange = controller.__get__('makeRange');
});
it('should return a string with a start date and end date', function() {
//
});
});
?
$(function () {
$("#total").bind("keyup change", function(e) {
console.log('event: ' + e.type);
});
$("#total").trigger('keyup').trigger('change');
});
答案 0 :(得分:0)
您正在使用rewire
,因此您可以模拟控制器中所需的moment
模块,以确保使用已知的日期/时间:
describe.only('makeRange', function () {
var makeRange;
beforeEach(function () {
var momentMock = function () {
return moment('2016-08-31T09:00:00Z');
};
controller.__set__("moment", momentMock);
makeRange = controller.__get__("makeRange");
});
it('should return a string with a start date and end date', function () {
expect(makeRange(40)).to.equal('2016-08-31T08:20:00.000Z,2016-08-31T09:00:00.000Z');
});
});