javascript - 用 sinon 监视 Date 构造函数

标签 javascript node.js mocha.js sinon

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

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: expected spy to have been called at least once, but it was never called

构造函数 spy 有什么需要注意的地方吗?

最佳答案

考虑到您的构造函数绑定(bind)到“全局”,这意味着如果您在浏览器上打开开发者控制台,您应该能够通过使用相关的函数/构造函数来实例化一个对象:

var Date = new Date();

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

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

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

关于javascript - 用 sinon 监视 Date 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338427/

相关文章:

javascript - window.resolveLocalFileSystemURI 不是函数

javascript - 为什么 Chrome 不允许 Web Worker 在 JavaScript 中运行?

javascript - 连接 MongoDB Native Driver Node JS 的正确方法

node.js - Mocha 测试失败时执行两次回调

javascript - Selenium(网络驱动程序)- 无法单击拆分按钮的右边缘(请参见图片链接)

javascript - 帧间 SOP - Chrome 扩展

javascript - 在 Node.js 服务器中创建并运行动态函数

javascript - 在 Node.js 的 while 循环内使用 setTimeout

Eclipse NodeJS 项目代码提示

javascript - 测试一个函数在 promise 解析中被调用