在 Promise 解析之前,Mocha 测试失败

Mocha test fails before Promise resolves

我在 NodeJS 中进行了 Mocha 测试:

it('Test', async () => {
    this.party = new Party('example_id');
    await this.party.startWithPlaylist('3e8JNsQmYEXtfV7K1M0pAb');
    assert.isTrue(this.party.getStreamingProvider().getAuth().getToken() !== undefined);
})

this.party.startWithPlaylist 为:

startWithPlaylist(id) {
    return new Promise(async (resolve, reject) => {
        assert.ok(id !== undefined);
        await this.start();
        let playlist = await this.songInfoProvider.getPlaylist(id);
        resolve();
    });
}

代码运行正常,但我的测试没有。开始测试 2 秒后我收到错误:

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

错误发生后 startWithPlaylist 正确完成,但似乎没有及时进行我的测试。

我查看了 Whosebug 并发现了类似的问题,但 none 有一个可接受的答案或任何其他对我有用的提示。我已经尝试将测试从 async 更改为仅等待使用 .then 解决的承诺,但我的 none 尝试使其成功。

如果有任何帮助,我将不胜感激!提前致谢!

你真的定义了arg。 “id”什么时候运行呢?

这里的问题是函数需要执行的时间高于提供的超时时间。

你可以通过多种方式使用 this.timeout(...) 来改变。文档 here

一种方法是这样的,但存在多种选择:suite/test/hook级别...

it('Test', async () => {
  this.party = new Party('example_id');
  await this.party.startWithPlaylist('3e8JNsQmYEXtfV7K1M0pAb');
  assert.isTrue(this.party.getStreamingProvider().getAuth().getToken() !== undefined);
}).timeout(4000)

或在 运行 mocha 时以这种方式使用 parameters in command line

mocha test --timeout 4000