我是测试 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)
我该如何解决这个问题?提前致谢。