使用酶进行测试时如何找到包裹在 MockedProvider 中的 Typography 组件

Posted

技术标签:

【中文标题】使用酶进行测试时如何找到包裹在 MockedProvider 中的 Typography 组件【英文标题】:How to find Typography component wrapped in MockedProvider when testing with enzyme 【发布时间】:2020-12-02 14:48:58 【问题描述】:

测试新手,试图弄清楚如何测试父组件是否呈现正确的子组件。说这是主要组件:

export const ParentComponent = () => 
 const loading, error, data = useQuery(someQuery);
 //some work with the data
 return (
 <>
   <div>
     <Component1></Component1>
     <Component2></Component2>
   </div>
   <div>
     <div>
       <Typography> Some text </Typography>
     </div>
   </div>
 </>

我想找到Typography 组件,这是我的想法,但没有找到:

  it("should render a Typography component", async () => 
    const wrapper = createMount(
      <MockedProvider mocks=mocks addTypename=false>
        <ParentComponent />
      </MockedProvider>
    );
    wrapper.update();
    let parentComponent = wrapper.find(ParentComponent);
    expect(parentComponent).toHaveLength(1); // passes
    expect(parentComponent.childAt(1).find(Typography)).toHaveLength(1); //doesn't pass
)

我还复制了以下内容:https://www.apollographql.com/docs/react/development-testing/testing/#testing-final-state 我不想找到'p' 标签,而是想找到Typography 组件

【问题讨论】:

【参考方案1】:

material-ui 并不总是将其 html 元素命名为与 react 组件相同的名称。在测试方面,我个人只是在组件上设置id 并使用它来查找我的组件。

【讨论】:

以上是关于使用酶进行测试时如何找到包裹在 MockedProvider 中的 Typography 组件的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:使用 react-create-app jest 和酶进行测试时,调度不是函数

如何使用 jest 和酶测试 API 调用?

如何使用酶、笑话和反应测试材料设计事件监听器

酶测试问题返回未定义

方法“props”仅用于在单个节点上运行。 0找到了。酶 - 错误

酶测试认证高阶组件(HOC)