Шпионаж на свидании конструктора с Синон


У меня есть метод, который устанавливает дату истечения срока действия токена:

var jwt = require('jwt-simple');
module.exports = {  
    setExpirationDate: function(numDays) {
        var dateObj = new Date();
        console.log(dateObj);
    }
}

Я хочу написать утверждение о" новой дате":

var jwtHelper = require('../../../helpers/jwtToken');
describe('setExpirationDate method', function() {
    it('should create date object', function() {
        var Date = sinon.spy(Date);
        jwtHelper.setExpirationDate(global.TOKEN_EXPIRE_DAYS);
        expect(Date).to.be.called;
    });
});

Тест не проходит с:

AssertionError: ожидалось, что шпион был вызван по крайней мере один раз, но это никогда не назывался

Есть ли какие-то вещи, касающиеся шпионов-конструкторов, которые должны быть затронуты?

1 2

1 ответ:

Учитывая, что ваш конструктор привязан к "глобальному", что означает, что если вы открываете консоль разработчика в вашем браузере, вы должны иметь возможность интантировать объект, используя соответствующую функцию / конструктор как таковой:

var Date = new Date();

Если это так, то фактический рабочий код может быть:

var Date = sinon.spy(global, 'Date');

expect(Date.called).to.be.equal(true);