用sinon监视日期构造函数

时间:2015-09-01 18:19:54

标签: javascript node.js mocha sinon

我有一个设置令牌到期日期的方法:

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 个答案:

答案 0 :(得分:4)

考虑到你的构造函数必然会被“全局”所包含。这意味着如果您在浏览器上打开开发人员控制台,您应该能够通过使用相关的函数/构造函数来实例化对象:

var Date = new Date();

如果是这样的实际工作代码可能是:

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

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