在 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
我在 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