【问题标题】:react testing library is not mocking inner child axios call反应测试库没有模拟内部子 axios 调用
【发布时间】:2022-01-06 01:04:10
【问题描述】:

如果有人遇到过,这是一个简单的问题。让我们有两个组件 A 和 B。A 是 B 的父级。B 在 useEffect 中有一个 Axios 调用。当我测试 A 并且它成功地在其中渲染了 B 时,但是 Axios 调用没有触发或模拟。 另外,我有一个单独的 B 测试,其中 Axios 调用被触发和嘲笑。 B中的axios调用没有条件,如果B渲染,必须触发axios调用。 如果有人有什么想法,请回答。

【问题讨论】:

    标签: reactjs axios jestjs mocking react-testing-library


    【解决方案1】:

    如果您已经对“B”组件进行了测试,则可以在“A”测试中模拟它。像这样:

    jest.mock("/path/to/B/component", ()=>()=><div>Some test text</div>)
    

    那么你可以这样做:

    it("should render B component",()=>{
        const wrapper = render(<A></A>)
        expect(wrapper.getByText("Some test text")).toBeInTheDocument();
    })
    

    【讨论】:

    • 但它在渲染 A 时已经渲染了 B 组件。@punjira
    • 是的,但是您提到您已经测试了您的 B 组件,那么为什么不将其模拟为 div 呢?
    • 我没有答案。当我测试父组件时,无法触发 axios 调用或无法触发模拟的 axios 调用,它位于子组件中。我添加这个以供参考。如果有人找到答案,请在下面提交。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2022-07-13
    • 2020-11-06
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多