消息“在jest.setTimeout指定的5000ms超时内未调用异步回调". [英] Message "Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout"
问题描述
我正在使用Puppeteer和Jest进行一些前端测试.
我的测试如下:
describe("Profile Tab Exists and Clickable: /settings/user", () => {
test(`Assert that you can click the profile tab`, async () => {
await page.waitForSelector(PROFILE.TAB);
await page.click(PROFILE.TAB);
}, 30000);
});
有时候,当我运行测试时,一切都会按预期进行.其他时候,我得到一个错误:
超时-在jest.setTimeout指定的5000毫秒超时内未调用异步回调.
at node_modules/jest-jasmine2/build/queue_runner.js:68:21 <br/> at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)
这很奇怪,因为:
-
我将超时设置为30000
-
我是否收到此错误似乎是非常随机的
为什么会这样?
您在此处指定的超时时间必须短于默认超时时间.
默认超时为5000
,对于jest
,默认情况下框架为jasmine
.您可以通过添加
jest.setTimeout(30000);
但这是特定于测试的.或者,您可以为框架设置配置文件.
// jest.config.js
module.exports = {
// setupTestFrameworkScriptFile has been deprecated in
// favor of setupFilesAfterEnv in jest 24
setupFilesAfterEnv: ['./jest.setup.js']
}
// jest.setup.js
jest.setTimeout(30000)
另请参阅以下线程:
制作茉莉花.DEFAULT_TIMEOUT_INTERVAL可配置#652 >
P.S .:拼写错误的setupFilesAfterEnv
(即setupFileAfterEnv
)也会引发相同的错误.
I'm using Puppeteer and Jest to run some front end tests.
My tests look as follows:
describe("Profile Tab Exists and Clickable: /settings/user", () => {
test(`Assert that you can click the profile tab`, async () => {
await page.waitForSelector(PROFILE.TAB);
await page.click(PROFILE.TAB);
}, 30000);
});
Sometimes, when I run the tests, everything works as expectedly. Other times, I get an error:
Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.
at node_modules/jest-jasmine2/build/queue_runner.js:68:21 <br/> at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)
This is strange because:
I specified the timeout to be 30000
Whether or not I get this error is seemingly very random
Why is this happening?
The timeout you specify here needs to be shorter than the default timeout.
The default timeout is 5000
and the framework by default is jasmine
in case of jest
. You can specify the timeout inside the test by adding
jest.setTimeout(30000);
But this would be specific to the test. Or you can set up the configuration file for the framework.
// jest.config.js
module.exports = {
// setupTestFrameworkScriptFile has been deprecated in
// favor of setupFilesAfterEnv in jest 24
setupFilesAfterEnv: ['./jest.setup.js']
}
// jest.setup.js
jest.setTimeout(30000)
See also these threads:
Make jasmine.DEFAULT_TIMEOUT_INTERVAL configurable #652
P.S.: The misspelling setupFilesAfterEnv
(i.e. setupFileAfterEnv
) will also throw the same error.
这篇关于消息“在jest.setTimeout指定的5000ms超时内未调用异步回调".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!