【问题标题】:How to unit test react components which are part of nested react routes如何对作为嵌套反应路线一部分的反应组件进行单元测试
【发布时间】:2020-08-15 16:25:40
【问题描述】:

我的组件链如下所示

我在这里的要求是测试 Sidebar 和 MainBar 组件。 MainBar 里面有路由。

我正在使用酵素.Mount,我发现它永远不会渲染侧边栏组件

 const AppWrapper = enzyme.mount(
      <IntlProvider locale="en">
        <SideBar />
      </IntlProvider>
    );

expect(AppWrapper.find(Nav)).toBe(true);//失败了,永远找不到Nav。

问题:如何使用asese.mount 渲染作为路径一部分的SideBar (:apps/teamsAppId)?

注意:我正在使用 react-router-dom 钩子

【问题讨论】:

  • 记录时有Nav吗 console.log(AppWrapper.debug())

标签: routes react-router jestjs react-hooks enzyme


【解决方案1】:

首先,酶的find()返回一个dom节点的集合。所以你实际上在做的是检查一个集合是否为真。

试试这个: expect(AppWrapper.contains(Nav)).toBe(true);

【讨论】:

  • 您好,感谢您的回复。好吧,我实际上需要这个工作 expect(AppWrapper.find(Nav).props().groups?.length).toBe(3);我无法使用“包含”来实现这一点。现在,它说 TypeError:无法读取未定义的属性“匹配”,它在 SideBar 组件内部使用的“useParams”附近失败
  • 好的,我猜你的SideBar 中有一些条件渲染。可以发一下内容吗?
猜你喜欢
  • 2017-05-02
  • 2015-12-06
  • 2017-05-20
  • 2019-09-30
  • 2021-05-02
  • 2020-01-20
  • 2019-03-26
  • 2020-09-28
  • 2019-11-27
相关资源
最近更新 更多