为什么这个带有简单异步回调的测试用例 (Jest) 会失败?
Why is this test case (Jest) with a trivial asynchronous callback failing?
上下文
我正在尝试使用 Jest (24.9) 编写一个测试用例,它具有异步回调函数并且会在 运行 时成功。我写的测试用例看起来应该可以,但是失败了,我也不清楚为什么。
测试用例
这是测试用例。它应该等待大约 100 毫秒然后成功。
test("async test case", async () => {
await (new Promise((resolve) => {
setTimeout(() => {expect(true).toBe(true)}, 100);
}));
}, 10000);
错误信息
当我 运行 测试用例时,它失败并显示此错误消息:
: Timeout - Async callback was not invoked within the 10000ms timeout specified by jest.setTimeout.
Timeout - Async callback was not invoked within the 10000ms timeout specified by jest.setTimeout.Error:
at new Spec (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Spec.js:116:22)
at new Spec (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\setup_jest_globals.js:80:9)
at new JBPatchedSpec (C:\Program Files\JetBrains\WebStorm 2019.2.1\plugins\JavaScriptLanguage\helpers\jest-intellij\lib\jest-intellij-jasmine-reporter.js:94:7)
at specFactory (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Env.js:575:24)
at Env.it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Env.js:644:24) at Env.it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmineAsyncInstall.js:132:23)
at it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\jasmineLight.js:93:21)
at Object.<anonymous> (C:\Users\<username>\WebstormProjects\jest-async-test\async.test.js:2:25)
...
问题
为什么这个测试用例失败了?
什么是具有成功的异步回调的简单测试用例示例?
这个测试用例中有几个回调。错误消息指的是哪一个?
这是一个简单的错误。正如@Emissary 指出的那样,Promise 从未得到解决。测试用例的通过版本如下所示:
test("async test case", async () => {
await (new Promise((resolve) => {
setTimeout(() => {expect(true).toBe(true)}, 100);
resolve();
}));
}, 10000);
上下文
我正在尝试使用 Jest (24.9) 编写一个测试用例,它具有异步回调函数并且会在 运行 时成功。我写的测试用例看起来应该可以,但是失败了,我也不清楚为什么。
测试用例
这是测试用例。它应该等待大约 100 毫秒然后成功。
test("async test case", async () => {
await (new Promise((resolve) => {
setTimeout(() => {expect(true).toBe(true)}, 100);
}));
}, 10000);
错误信息
当我 运行 测试用例时,它失败并显示此错误消息:
: Timeout - Async callback was not invoked within the 10000ms timeout specified by jest.setTimeout.
Timeout - Async callback was not invoked within the 10000ms timeout specified by jest.setTimeout.Error:
at new Spec (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Spec.js:116:22)
at new Spec (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\setup_jest_globals.js:80:9)
at new JBPatchedSpec (C:\Program Files\JetBrains\WebStorm 2019.2.1\plugins\JavaScriptLanguage\helpers\jest-intellij\lib\jest-intellij-jasmine-reporter.js:94:7)
at specFactory (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Env.js:575:24)
at Env.it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\Env.js:644:24) at Env.it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmineAsyncInstall.js:132:23)
at it (C:\Users\<username>\WebstormProjects\jest-async-test\node_modules\jest-jasmine2\build\jasmine\jasmineLight.js:93:21)
at Object.<anonymous> (C:\Users\<username>\WebstormProjects\jest-async-test\async.test.js:2:25)
...
问题
为什么这个测试用例失败了?
什么是具有成功的异步回调的简单测试用例示例?
这个测试用例中有几个回调。错误消息指的是哪一个?
这是一个简单的错误。正如@Emissary 指出的那样,Promise 从未得到解决。测试用例的通过版本如下所示:
test("async test case", async () => {
await (new Promise((resolve) => {
setTimeout(() => {expect(true).toBe(true)}, 100);
resolve();
}));
}, 10000);