【问题标题】:Why is this test case (Jest) with a trivial asynchronous callback failing?为什么这个带有微不足道的异步回调的测试用例(Jest)会失败?
【发布时间】:2020-01-27 03:00:03
【问题描述】:

上下文

我正在尝试使用 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)
    ...

问题

为什么这个测试用例失败了?

一个带有异步回调的简单测试用例会成功吗?

在这个测试用例中有几个回调。错误消息指的是哪一个?

【问题讨论】:

  • 你永远不会resolve承诺。

标签: javascript unit-testing asynchronous timeout jestjs


【解决方案1】:

这是一个简单的错误。正如@Emissary 指出的那样,承诺永远不会得到解决。测试用例的通过版本如下所示:

test("async test case", async () => {
    await (new Promise((resolve) => {
        setTimeout(() => {expect(true).toBe(true)}, 100);
        resolve();
    }));
}, 10000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多