【发布时间】:2017-09-05 22:35:37
【问题描述】:
我在完全覆盖我的 apollo 组件时遇到问题。伊斯坦布尔报告 compose() 内部的函数没有被调用。这些是 Redux connect() 函数和 apollo graph() 函数。
export default compose (
...
connect(mapStateToProps, mapDispatchToProps), // <-- functions not covered
graphql(builderQuery, {
options: (ownProps) => { // <-- function not covered
...
)(ComponentName);
我正在使用酶进行安装,尝试执行类似于 react-apollo 示例的操作。
const mounted = shallow(
<MockedProvider mocks={[
{ request: { query, variables }, result: { data: response.data } }
]}>
<ConnectedComponentName />
</MockedProvider>
);
我能够实现 100% 覆盖率的唯一方法是导出所有函数并直接调用它们。
【问题讨论】:
-
我正在尝试使用来自
redux-test-utils的createMockStore和 react-apollo 示例。createMockStore允许您针对给定的商店测试您的容器并让您触发您的调度。当前的问题是模拟存储不能与 mount() 一起使用。并且带有 dip() 的 shallow() 以某种方式将客户端从上下文中删除。如果您有更多信息,请告诉我。 -
@ChrisKong 我认为浅安装不再正确。如果可能的话,尝试做一个完整的安装。我发现这些实用程序不是很有用,尤其是当您开始需要测试
update和updateQueries时。
标签: redux graphql enzyme istanbul react-apollo