gpt4 book ai didi

jestjs - Jest + React-testing-library - 等待模拟的异步函数完成

转载 作者:行者123 更新时间:2023-12-04 00:57:44 26 4
gpt4 key购买 nike

我的 componentDidMount()触发对异步函数的调用,但根据该函数的结果,它可能不会导致任何 DOM 更改。有什么办法可以等待该功能在我的测试中完成吗?

这是一个示例 - 单击按钮最初是禁用的。如果 async 函数返回 true,则应启用单击按钮:

    myAsyncFunction.mockImplementation(() => true);
const {queryByText} = render(<Component />);
const button = queryByText("Click");
expect(button).toBeDisabled();
await waitFor( () => expect(button).not.toBeDisabled() );
expect(button).not.toBeDisabled();

但如果它返回 false 按钮​​保持禁用状态:
    myAsyncFunction.mockImplementation(() => false);   // async returning different value
const {queryByText} = render(<Component />);
const button = queryByText("Click");
expect(button).toBeDisabled();
await waitFor( () => {} ); // <== **** CODE SMELL ****
expect(button).toBeDisabled();

第二个测试确实有效,但空 waitFor()被认为是不好的做法。有什么办法可以避免这种情况吗?

最佳答案

waitFor 的文档中,建议等待你的异步函数.toHaveBeenCalled像这样

await waitFor(() => expect(mockAPI).toHaveBeenCalledTimes(1))

关于jestjs - Jest + React-testing-library - 等待模拟的异步函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60986519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com