无法使用mocha在node.js中测试我的异步代码

时间:2014-05-25 21:15:25

标签: javascript node.js mocha

我有以下代码:

function ToDo(){
    //something
}

ToDo.prototype.doAsync = function(cb){
    setTimeout(cb,2000,true);
};

现在我正在尝试使用mocha测试此代码:

//async
describe('doAsync', function(){

     it('getting callback in two seconds', function(done){
        todo.doAsync(function(){
            done();
        });

     });
});

结果我的测试失败了。

 1 failing

  1) todo doAsync getting callback in two seconds:
     Error: timeout of 2000ms exceeded
      at null.<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:139:19)
      at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的测试最有可能需要比默认的2000毫秒超时完成一点点。所以你需要增加它。在您的情况下,因为您很可能始终需要在运行doAsync的测试时增加它,我会调用顶级timeout方法{{ 1}}:

describe

答案 1 :(得分:1)

尝试使用-t标志增加mocha测试的超时时间:

  

-t, - timeout设置测试用例超时,以毫秒为单位[2000]

例如:

  

mocha -t 5000

默认时间是2秒,看起来在测试完成之前已经达到超时,因此Mocha假设存在问题并暂停测试。