出现错误“错误:超时超过 2000 毫秒。对于异步测试和挂钩,确保调用了“done()”;”

新手上路,请多包涵

我看到以下使用 mochachai 库作为测试用例。 Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

这是 code 用于测试亚马逊 lambda 函数的处理程序。(目前,我没有使用 super-test npm 模块)

 const expect = require('chai').expect;
const mongoose = require('mongoose');
const CONFIG_DEV_MONGODB = require('../../config/config.dev').DB_CONNECTION_URL;

describe('get the foo', () => {

    let handler;
    before(() => {

        process.env.DEPLOYMENT_STAGE = 'test';
        process.env.DB_CONNECTION_URL = CONFIG_DEV_MONGODB;
        handler = require('./get');
    });

    after(() => {

        if (mongoose.connection) {
            mongoose.connection.close();
        }
    });

    it('validate getFeaturedProducts get request with storeid',function(done){
        //request has the sample data for event
        let request = require('../../test/fixtures/featureProductJSON');
        handler.getFeaturedProducts(request, {} , (error, result) => {

             expect(error).to.be.null;
             expect(result).to.be.not.null;
             done()
         })

    })
});

这是处理程序

module.exports.getFeaturedProducts = function (event, context, callback) {
    ..............
    .......
    mongoConnection.then( function() {
         return callback(null, 'test');
     }, function (error) {

        return return callback(true, null);;
    })
 }

谁能解释一下发生了什么

原文由 made_in_india 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您的测试花费的时间比 Mocha 预期的要长并且超时。默认情况下,所有回调函数在 2000 毫秒后超时。您需要使用 this.timeout() 调整测试套件的超时时间。

您可以在 describe() 的套件级别指定它:

 describe('get the foo', function () {
  this.timeout(10000) // all tests in this suite get 10 seconds before timeout

  // hooks & tests
})

您可以在钩子中指定它,例如 before()

 describe('get the foo', function() {
    before(function() {
      this.timeout(10000) // 10 second timeout for setup
    })

    // tests
})

您也可以在 it() 的测试级别执行此操作

describe('get the foo', function () {
  it('validate getFeaturedProducts get request with storeid', function (done) {
    this.timeout(10000) // 10 second timeout only for this test

    // assertions
  })
})

原文由 peteb 发布,翻译遵循 CC BY-SA 3.0 许可协议

帮助将 .timeout(10000) 添加到函数的末尾 it()

 describe('Reverse String Test', () => {

 it('Compare first data',  async function () {
     try {
        await sql.connect(config);

        let request = await new sql.Request()
         .query('SELECT count(*) FROM dbo.valJob');
             console.log(request);
        await sql.close();

    } catch (err) {
        console.log(err)
    }

 }).timeout(10000);
});

原文由 Alexander Tunick 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏