小编Naz*_*zar的帖子

Jest - 传递给子组件的测试方法

我是测试 React 组件的新手,所以我尝试在父组件中测试一些作为 props 传递给子组件的方法。我为此使用 Jest 和 Enzyme。

我的测试:

it('should be able to call myMethod callback', () => {
  const mockFn = jest.fn();
  ParentComponent.prototype.myMethod = mockFn;

  const wrapper = Enzyme.shallow(<ParentComponent />);
  wrapper.find('ChildComponent').props().myMethod();

  expect(mockFn).toHaveBeenCalledTimes(1);
});
Run Code Online (Sandbox Code Playgroud)

测试通过,但 myMethod 未调用(测试未覆盖 myMethod)。

当我使用时:

wrapper.instance().myMethod = mockFn;
Run Code Online (Sandbox Code Playgroud)

代替:

ParentComponent.prototype.myMethod = mockFn;
Run Code Online (Sandbox Code Playgroud)

一切都相反 - myMethod 被调用,但测试失败并出现错误:

expect(jest.fn()).toHaveBeenCalledTimes(1)

Expected mock function to have been called one time, but it was called zero times.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?提前致谢。

reactjs jestjs enzyme

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

标签 统计

enzyme ×1

jestjs ×1

reactjs ×1