javascript - 即使返回 promise 后, promise 测试也会超时

标签 javascript node.js mocha.js

我研究发现,在 Mocha 中测试 Promise 时,你必须返回 Promise。

我尝试执行以下操作,但测试始终超时。正确的做法是什么?

describe('A promise', () => {

    it('should not timeout', () => {

        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('hi!');
            }, 3000);
        }).then((msg) => {
            expect(msg).to.equal('hi!');
        });

    });

});

输出:

$ ./node_modules/mocha/bin/mocha test.js


  A promise
    1) should not timeout


  0 passing (2s)
  1 failing

  1) A promise
       should not timeout:
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

编辑:我尝试在 it 行中添加 done 并在我的 then block 中调用它,但是它不起作用

最佳答案

尝试这个(仅更改:“.timeout(5000)”被添加到“it”)。这对我有用。基本上,如果您预计异步调用将花费超过 2 秒,则必须更改异步调用的默认超时 2 秒。

describe('A promise', () => {
    it('should not timeout', () => {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('hi!');
            }, 3000);
        }).then((msg) => {
            expect(msg).to.equal('hi!');
        });
    }).timeout(5000);
});

第二个选项(在这种情况下无需更改测试):

./node_modules/mocha/bin/mocha --timeout 5000 test-mocha-spec.js

关于javascript - 即使返回 promise 后, promise 测试也会超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726898/

相关文章:

Node.js Mocha Sequelize Error 连接管理器关闭后调用ConnectionManager.getConnection

javascript - Vimeo channel 和视频未显示

node.js - 环回钩子(Hook)工作流程如何在内部发生

Node.js 如何将 req.body 转换为字符串

javascript - Node 红色 : TypeError: Cannot read property 'nodes' of undefined

javascript - Chai 中的 “assert” 、 “expect” 和 “should” 有什么区别?

javascript - 如何使用 Nightmare.js 将文本输入到具有相同类的两个元素中

Javascript 正则表达式禁用 Shift、Alt 和 Ctrl 键

javascript - 经纬度和坐标格式的区别

javascript - Kendo UI 不向上滚动