【问题标题】:Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves错误:超过 2000 毫秒的超时。对于异步测试和钩子,确保调用“done()”;如果返回一个 Promise,确保它解析
【发布时间】:2017-12-24 18:18:47
【问题描述】:

我尝试在我的 mocha 测试中将值插入 db 中,但出现此错误我尝试了以下几种方法,但没有任何效果。

var assert=require('chai').assert;
const user=require('../model/user')

我都试过了

describe('insertDataLasone',()=>{
    it('should save the value ',(done)=>{
        var User = new user({fname:'test'});
        User.save().then(done=>{
            done()
        }).catch(done=>done())
    })
})

describe('User', function() {
    describe('#save()', function() {
        // this.timeout(5000)
      it('should save without error', function(done) {          
        var User5 = new user({fname:'test'});
        User5.save(function(done) {
          if (err) done(err);
          else setTimeout(done,3000);
        });
      });
    });
  });

【问题讨论】:

  • 你不认为你在隐藏实际的函数名称和调用你的回调函数而不是实际的done吗?
  • 我试过了还是同样的错误?

标签: mocha.js chai


【解决方案1】:

done() 未在测试中调用时会发生此错误。确保您拨打的是done()

var assert = require('chai').assert;
const User = require('../model/user');

describe('insertDataLasone', () => {
  it('should save the value ', done => {
      var user = new User({ fname: 'test' });
      user.save().then(() => {
        done();
      })
      .catch(done); // mocha done accepts Error instance
  });
});

var assert = require('chai').assert;
const User = require('../model/user');

describe('User', function() {
  describe('#save()', function() {
    it('should save without error', function(done) {
      var user5 = new User({ fname: 'test' });
      user5.save(function(err) {
        if (err) done(err);
        else done();
      });
    });
  });
});

仔细阅读https://mochajs.org/#asynchronous-code

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 2020-05-12
    • 2019-06-14
    • 1970-01-01
    • 2019-07-24
    • 2019-06-24
    • 2018-07-02
    • 2020-11-19
    • 2019-10-22
    相关资源
    最近更新 更多