我在我的Node应用程序中进行了一些集成测试,在我的代码中的某个时刻,我调用了以下函数:
async.parallel([
function foo(callback){
setTimeout(function(){
//DO SOMETHING HERE;
callback(null, result);
}, 500);
},
function bar(callback){
//DO SOMETHING HERE;
callback(null, result);
}],
function(err, results){
//Process results here and continue
});
此代码是更大节点应用程序的一部分。
现在,当我尝试使用Mocha测试我的代码时,测试会挂起,因为foo()中的超时永远不会被触发,因此并行执行永远不会完成。当我删除setTimeout时,执行完成就好了。
这是测试代码:
it("test something", function(done) {
request(app)
.post(requestUrl)
.send(testRequest)
.expect(200)
.end(function(err, res){
(res.body.text).should.equal('Hello World');
done();
});
});
我尝试了什么: 显然,时钟在测试过程中被拆开,所以我尝试使用Sinon来模拟时间的流逝,但无济于事。
我该如何解决这个问题?
答案 0 :(得分:0)
我今天遇到了类似的问题。
我在没有var clock = sinon.useFakeTimers()
的情况下使用clock.restore()
。
要尝试这样做,您可以使用:
console.log(new Date().getTime());
console.log(new Date().getTime());
如果你得到两倍相同的值,则意味着你可能已经改变了时钟。