【问题标题】:testing multiple HOC composed with recompose测试用 recompose 组成的多个 HOC
【发布时间】:2019-09-06 06:05:02
【问题描述】:

我有一个设置,其中我有一个使用 recompose 由多个 HOC 组成的主容器。

使用的 HOC 是;

使用PageWrapper, 随着加载, 有错误

这样组成:

compose(
    withPageWrapper,
    withLoading,
    withError
)(MainContainer)

测试这个逻辑被证明是困难的。我正在做的项目是使用 react-test-renderer 并利用浅渲染方法。

因此,在测试快照以确保错误状态正在加载快照时,只测试一层深度(由于浅渲染)并始终返回:

<PageWrapper>
    <LoadingContainer>
    </LoadingContainer>
</PageWrapper>

相反,我想在快照中看到的是:

<PageWrapper>
    <ErrorContainer>
    </ErrorContainer>
</PageWrapper>

正如我所期望的那样,加载 HOC 会简单地渲染主容器,因为加载属性为 null 或 false。

进行完整渲染而不是浅渲染只会使快照几乎无法读取。有没有办法在 react-test-renderer 中使用浅渲染,测试多个 HOC 的组合?

【问题讨论】:

    标签: reactjs snapshot recompose react-test-renderer


    【解决方案1】:

    所有使用中的 HOC 函数都可以通过一些基本实现来模拟,例如

    jest.fn().mockImplementation(Comp => props => (
      <div data-testid="FooHOC"><Comp ...props/></div>
    ));
    

    允许在快照中有效地断言结果。

    可以在专门的测试中测试原始 HOC 功能的效果。

    【讨论】:

    • 所以我还是不太明白。我是否需要模拟每个 HOC,然后进行原始的浅渲染以与快照进行比较?我想我只是不确定模拟如何帮助解决使用浅渲染的问题
    • 这样做的目的是进行完整渲染并获得干净且可预测的快照。
    猜你喜欢
    • 2019-02-27
    • 2017-11-23
    • 2018-03-16
    • 2018-02-02
    • 2020-10-21
    • 2019-07-04
    • 2021-04-18
    • 2020-09-09
    • 2019-01-27
    相关资源
    最近更新 更多