如何在React测试库中全局设置waitFor选项?

问题描述 投票:0回答:4

我正在查看 waitFor 文档,我想知道是否有任何方法可以全局配置它,例如在

jest.config
或用于启动测试套件的命令中?

我需要在每次测试中增加超时,这有点烦人。

reactjs jestjs react-testing-library
4个回答
16
投票

根据文档,各种异步实用程序的超时配置选项是

asyncUtilTimeout

asyncUtilTimeout

waitFor
实用程序使用的全局超时值(以毫秒为单位)。 默认为 1000 毫秒。

您可以使用

configure
功能进行配置,例如在
setupTests.js
文件中:

import { configure } from "@testing-library/react";

configure({ asyncUtilTimeout: 5000 });

1
投票

您可以创建一个辅助函数,不是吗?


export function wrappedWaitFor(cb, opts = {}) {
  waitFor(cb, { ...opts, timeout: 10000 });
}


1
投票

添加@jonrsharpe 的答案 https://stackoverflow.com/a/68253478/5015848

您可以在 setupTests.js / setupTests.ts 文件中为

@testing-library/react
@testing-library/dom
配置异步方法的超时:

import { configure as configureReact } from "@testing-library/react";
import { configure as configureDom } from "@testing-library/dom";

configureReact({ asyncUtilTimeout: 5000 });
configureDom({ asyncUtilTimeout: 5000 });

但是,如果您需要为任何其他

testing-library
包的异步方法配置它,那么需要为每个异步方法进行配置,例如。

waitFor(callback_func, { timeout: 5000 });

或者按照@Baruch的建议创建一个辅助函数 https://stackoverflow.com/a/68251268/5015848


0
投票

@Baruch 给出的答案的 ts 版本:

export async function waitForLonger<T>(
    callback: () => Promise<T> | T, 
    opts?: waitForOptions
): Promise<T> {
   return waitFor<T>(callback, { ...opts, timeout: 10000 });
}
© www.soinside.com 2019 - 2024. All rights reserved.