【发布时间】:2018-06-08 17:07:07
【问题描述】:
我正在尝试使用 Enzyme 来测试组件的方法。我知道这样做的典型方法是使用 Enzyme 的 instance() 方法。
问题是,这只适用于root 组件,我的组件需要包装在两个上下文提供程序中才能呈现(即,react-router 和 apollo 客户端)。
const wrapper = mount(
<ApolloProvider client={client}>
<MemoryRouter initialEntries={["/login"]}>
<AuthFormContainer />
</MemoryRouter>
</ApolloProvider>
);
在这种情况下,我如何测试methodA 的AuthFormContainer?
【问题讨论】:
-
你应该为 AuthFormContainer 编写一个单独的测试用例
-
@ShubhamKhatri 你能详细说明如何做到这一点吗?
-
@ShubhamKhatri 我认为如果这个组件是由 apollo 团队创建的,我们确实需要测试 ApolloProvider,因为它已经过测试。 ThéoChampion 如果是您自定义组件,请单独测试
-
@ShubhamKhatri 是的,但是我的组件需要用
apolloProvider包装才能呈现(authFormContainer是消费者) -
@ThéoChampion,我的意思是,如果你想在 AuthFormContainer 中测试函数,你需要为该组件编写测试用例,而不是为呈现 ApolloProvider 的组件编写测试用例