酶测试嵌套组件的方法

2024-04-02

我正在尝试使用 Enzyme 来测试组件的方法。我知道执行此操作的典型方法是使用酶instance() method.

问题是,这只适用于root组件和我的组件需要包装在两个上下文提供程序中才能渲染(即react-router和apollo客户端)。

  const wrapper = mount(
    <ApolloProvider client={client}>
      <MemoryRouter initialEntries={["/login"]}>
        <AuthFormContainer />
      </MemoryRouter>
    </ApolloProvider>
  );

我该如何测试methodA of AuthFormContainer在这种情况下 ?


对于单元测试,您不应该担心其他组件。但如果必须的话,您可以使用浅层渲染。这是我所做的:

const wrapper = shallow(
    <ApolloProvider client={client}>
      <MemoryRouter initialEntries={["/login"]}>
        <AuthFormContainer />
      </MemoryRouter>
    </ApolloProvider>
);

获取组件树AuthFormContainer using:

const authFormControllerTree = wrapper.find(MemoryRouter).shallow().find(AuthFormContainer).shallow()

现在来测试一下methodA in the AuthFormContainer,你可以这样做:

authFormControllerTree.instance().methodA();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

酶测试嵌套组件的方法 的相关文章

随机推荐