我有以下代码:

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)


我究竟做错了什么?

最佳答案

您的测试最有可能比默认的2000ms超时花费更多时间。因此,您需要增加它。在您的情况下,由于每次为doAsync运行测试时,您很可能总是需要增加它,因此我将调用顶级timeoutdescribe方法:

describe('doAsync', function () {
    this.timeout(3000);

    // tests...
});

09-10 10:44