我在用木偶师和小丑做一些前端测试。
我的测试如下:
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);
});
有时,当我运行测试时,一切都按预期工作。其他时候,我得到一个错误:
Timeout -在jest.setTimeout指定的5000毫秒超时时间内没有调用异步回调。
在node_modules/jest-jasmine2/build/queue_runner.js:68:21 <br/>
在超时。callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)
这很奇怪,因为:
我将超时时间指定为30000
我是否得到这个错误似乎是随机的
为什么会这样?
此处指定的超时时间必须小于默认超时时间。
默认的超时时间是5000,框架默认为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)
请参见这些线程:
5055号考试第七次出局
茉莉花。DEFAULT_TIMEOUT_INTERVAL可配置#652
注:拼写错误的setupFilesAfterEnv(即setupFileAfterEnv)也会抛出相同的错误。
对于大于27的笑话版本,您可以在规范文件的顶部添加useRealTimers。
下面是代码片段
import { shortProcess, longProcess } from '../../src/index';
jest.useRealTimers();
describe(`something`, function () {
it('should finish fine', async function () {
await shortProcess();
expect(1).toBe(1);
});
it('should fail with a timeout', async function () {
await longProcess();
expect(1).toBe(1);
});
it('should finish fine again', async function () {
jest.setTimeout(10 * 1000);
await longProcess();
expect(1).toBe(1);
}, 10000);
});
在笑话仓库这里找到github问题。