我正在尝试测试一个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。
答案 0 :(得分:0)
经过几次测试,这是我发现的。 您可以检查定时器属性。它似乎与测试一起检查timer._idleTimeout == -1和timer._onTimeout == null
在我自己的情况下,我决定将null赋给timer对象,以便可以销毁引用。 然后一个简单的测试是:
should.not.exist(timer)