node.js mocha test clearTimeout

时间:2016-04-16 13:17:05

标签: javascript node.js timer mocha

我正在尝试测试一个node.js计时器是否真的用Mocha和If清除。到现在为止,我找不到一个好的解决方案。 尝试一个简单的例子:

function myClass() {
    this.timers = Array();
}

myClass.sendEvent(fct, timeout) {
    this.timers.push(setTimeout(fct, timeout));
}

myClass.clearTimeout(timerId) {
    clearTimeout(this.timers[timerId]);
    this.timers[timerId] = null;
} 

我的mocha测试只是检查我的计时器是否真的为空。我系统地得到一个错误,说定时器(Node.js Timer对象)不为空。

Uncaught AssertionError: expected Object {
  _called: false,
  _idleNext: Timer {
    '0': Function { name: 'listOnTimeout' },
    _idleNext: [Circular],
    _idlePrev: [Circular],
    msecs: 2000
  },
  _idlePrev: Timer {
    '0': Function { name: 'listOnTimeout' },
    _idleNext: [Circular],
    _idlePrev: [Circular],
    msecs: 2000
  },
  _idleStart: 18768,
  _idleTimeout: 2000,
  _onTimeout: Function { name: '' },
  _repeat: null
} to be null

有没有好方法呢?

THX。

1 个答案:

答案 0 :(得分:0)

经过几次测试,这是我发现的。 您可以检查定时器属性。它似乎与测试一起检查timer._idleTimeout == -1和timer._onTimeout == null

在我自己的情况下,我决定将null赋给timer对象,以便可以销毁引用。 然后一个简单的测试是:

should.not.exist(timer)