Node.js 超过了2000毫秒的超时时间。对于异步测试和挂钩,请确保;完成();被称为;如果返回承诺,请确保它已解决

Node.js 超过了2000毫秒的超时时间。对于异步测试和挂钩,请确保;完成();被称为;如果返回承诺,请确保它已解决,node.js,mocha.js,chai,Node.js,Mocha.js,Chai,我正在编写单元测试用例来测试user.test.js中user.service.js的方法,但是如果测试用例的数量增加,我会遇到这个错误: 错误:超过2000毫秒的超时。对于异步测试和挂钩,请确保调用“done()”;如果返回承诺,请确保它已解析 在此,我将plunker链接附加到最低要求的文件: 有些文件与此无关。我尝试过的是: 1) 覆盖了所有测试用例的超时,并且在几个测试用例之后面临相同的问题 2) 在每个测试用例中调用done() 3) 在package.json的命令行中描述了配置的

我正在编写单元测试用例来测试user.test.js中user.service.js的方法,但是如果测试用例的数量增加,我会遇到这个错误: 错误:超过2000毫秒的超时。对于异步测试和挂钩,请确保调用“done()”;如果返回承诺,请确保它已解析

在此,我将plunker链接附加到最低要求的文件:

有些文件与此无关。我尝试过的是:

1) 覆盖了所有测试用例的超时,并且在几个测试用例之后面临相同的问题

2) 在每个测试用例中调用done()

3) 在package.json的命令行中描述了配置的超时


我在回报道的承诺。所以当承诺得到解决时,我们无法预测。测试用例的顺序也是我们无法预测的,所以我们不能增加测试套件或单个测试用例的超时时间。其他服务的测试用例也很少。那么,有没有办法解决这个问题。

您需要为每个案例传递done回调-这将解决您的问题

it('creates a user', function(done) {
    var user = {
        id: null,
        name: 'abc',
        email: 'xyz@gmail.com',
        phoneNo: 8978567438,
        picUrl: 'nilu',
        description: 'SI',
        status: 'active',
        waitingTime: 10,
        rating: 7
    };
    new Promise((resolve, reject) => {
      return userService.register(user, (res) => {
        //log.info('value after insert: ' + JSON.stringify(res));
        //expect(res.id).to.be.greaterThan(0);
        //expect(result.name).to.equal(user.name);
        //userService.delete(res.id, (res) => {});
      }).then((result) => {
        //expect(result.id).to.be.greaterThan(0);
        log.info('user value after insert: ' + JSON.stringify(result));
        //userService.delete(result.id, (result) => {});
        resolve();
      });
    }).then(() => done());
});
你为什么不在这里使用sinon

如果不想使用sinon.stub,则需要在之后增加超时

describe('userDao', function() { 
  this.timeout(3000) 
我在这里贴了一个例子:


希望它能帮助您

这通常意味着测试在成功状态下没有调用
done()
。您可以通过调用
done()
来解决此问题


如果仍然看到错误,则可能是没有调用回调,请仔细检查异步函数,例如上面的
contactService.getAll()
。仔细阅读。

我在这里贴了一个例子。希望它能帮助你:请把我的答案标记为正确。
describe('userDao', function() { 
  this.timeout(3000) 
describe('testing', () => {
  describe('random test cases 1', () => {
    it('Gets all contacts 1', (done) => {
        return contactService.getAll((result) => {
            done();
        });
    });
    it('Gets all contacts 2', (done) => {
      return contactService.getAll((result) => {
          done();
      });
    });
  });
  describe('random test cases 2', () => {
    it('Gets all contacts 21', (done) => {
      return contactService.getAll((result) => {
          done();
      });
    });
    it('Gets all contacts 22', (done) => {
      return contactService.getAll((result) => {
          done();
      });
    });
  });
});