使用酶和玩笑测试Redux连接的组件

问题描述 投票:0回答:1

我正在用玩笑和酶对我的React应用程序进行单元测试,直到我碰巧测试了与Redux连接的类组件为止,一切都很好。我继续进行了测试,通过用a包裹组件,然后将其浅层安装。但是,在更新组件的属性后,我无法运行断言,也无法监视正在调用或未调用的类方法。

下面是我的示例代码:

const wrapper = shallow(
    <Provider store={store}>
        <TestComponent {...props}  />
    </Provider>
).dive();

现在,当我尝试设置包装器的道具并运行断言时,它将失败:

wrapper.setProps({
  showHeader:  true
})
expect(wrapper.find('h1')).toHaveLength(1);

有趣的部分是,如果我将未连接的组件也导出为redux docs中的suggested,则断言可以很好地工作。仅出于测试目的而导出未连接的组件是否可以?如果尝试测试连接的组件,则无法监视实例方法/生命周期方法。

reactjs unit-testing redux jestjs enzyme
1个回答
0
投票

您可以从connect模拟react-redux函数以返回原始组件

jest.mock('react-redux', () => ({
   connect: () => Component => Component
}))

© www.soinside.com 2019 - 2024. All rights reserved.