小编Mar*_*tes的帖子

模拟react-redux的useSelector和jest,用react测试库进行测试

我正在尝试测试一个使用react-redux 进行状态管理的组件。

为了快速测试,我想模拟 useSelector,如下所示:

const templates = [
  {
    id: ...,
    name: ...,
    ...
  },
  {
    id: ...,
    name: ...,
    ...
  },
]


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


describe('some awesome description', () => {
  beforeEach(() => {
    useSelector.mockImplementation(callback => callback(templates));
  });
});
Run Code Online (Sandbox Code Playgroud)

但在运行测试时,会失败,如下所示:

TypeError: Cannot read properties of undefined (reading 'ids')

  141 | describe('layouts/TemplatesPanel', () => {
  142 |   beforeEach(() => {
> 143 |     useSelector.mockImplementation(callback => callback(templates));
      |                                                ^
Run Code Online (Sandbox Code Playgroud)

unit-testing reactjs jestjs react-redux react-testing-library

3
推荐指数
1
解决办法
2万
查看次数