我正在用玩笑和酶对我的React应用程序进行单元测试,一切都很好,直到我偶然测试了与Redux连接的类组件。我继续进行了测试,通过用a包裹组件,然后将其浅层安装。但是,更新组件的属性后,我将无法运行断言,也无法监视正在调用或未调用的类方法。
下面是我的示例代码:
const wrapper = shallow(
<Provider store={store}>
<TestComponent {...props} />
</Provider>
).dive();
现在,当我尝试设置包装器的道具并运行断言时,它会失败:
wrapper.setProps({
showHeader: true
})
expect(wrapper.find('h1')).toHaveLength(1);
有趣的是,如果我在redux文档中也将未连接的组件也导出为suggested,则断言可以很好地工作。仅出于测试目的而导出未连接的组件是否可以?如果尝试测试连接的组件,则无法监视实例方法/生命周期方法。
答案 0 :(得分:0)
您可以从connect
模拟react-redux
函数以返回原始组件
jest.mock('react-redux', () => ({
connect: () => Component => Component
}))