You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React测试覆盖率检查报错:TypeError: connect不是函数

解决React Redux connect测试报错问题

可能的原因及修复方案

1. 修正react-redux的Mock方式

测试中如果手动Mock了react-redux,错误的Mock逻辑会导致connect被识别为非函数。直接在测试文件顶部添加正确的Mock:

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

这段代码会把connect模拟成一个高阶函数,直接返回传入的原组件,绕开Redux连接逻辑,避免报错。

2. 用Provider包裹组件渲染

如果测试时未用Redux的Provider包裹组件,也可能触发连接逻辑异常。确保渲染组件时注入模拟Store:

import { Provider } from 'react-redux';
import { render } from '@testing-library/react';
import configureStore from 'redux-mock-store';
import Leaderboard from '../Leaderboard';

const mockStore = configureStore([]);

test('Leaderboard组件渲染正常', () => {
  const store = mockStore({});
  render(
    <Provider store={store}>
      <Leaderboard />
    </Provider>
  );
  // 后续断言逻辑
});

3. 直接测试未连接的原始组件

如果组件文件同时导出了未连接的原始组件(通常会用命名导出),可以直接导入该版本测试,完全绕开connect:

import { Leaderboard as UnconnectedLeaderboard } from '../Leaderboard';

test('未连接的Leaderboard组件渲染正常', () => {
  render(<UnconnectedLeaderboard /* 传入props替代mapStateToProps的返回值 */ />);
  // 后续断言逻辑
});

4. 检查测试文件的react-redux导入路径

确保测试文件中react-redux的导入方式和组件文件完全一致,比如组件用import { connect } from 'react-redux',测试中不要使用相对路径导入该模块,避免模块解析错误。


内容的提问来源于stack exchange,提问作者Jack Sparrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:52:09