【发布时间】:2021-04-18 06:45:08
【问题描述】:
与主题一样,我想测试具有 HOC 的 React 组件方法。
通常我是这样做的:
describe('component method', () => {
it('returns with null or undefined value', () => {
const wrapper = shallow(<Component />);
expect(wrapper.instance().methodName());
});
});
但现在我有需要存储的组件,所以我正在尝试这样做:
describe('component method', () => {
it('returns with null or undefined value', () => {
const wrapper = shallow(<Component store={store} />);
expect(wrapper.instance().methodName());
});
});
当然 store 是定义的:
const mockStore = configureMockStore();
let store;
但我得到错误
TypeError: wrapper.instance().methodName is not a function
会不会是因为我的组件是这样包裹的?
export default withSocket(Component);
如果是,我该如何解决?
【问题讨论】:
-
模拟 HOC 并仅测试组件就足够了吗?或者你想同时测试 HOC 和组件?
-
我只是想测试组件,我不需要测试HOC,问题是组件具有加载状态并使用套接字从后端获取值,所以当它没有从后端获取值时它不会将加载状态更改为 false,因此不会渲染任何元素
-
我认为您可以模拟
withSocket或直接导出组件进行测试,因为withSocket应该在其他地方进行测试
标签: reactjs testing jestjs enzyme react-testing-library