I recently wanted to test that some custom method gets conditionally called in the componentDidMount
method of a React component.
componentDidMount() {
if (this.props.initOpen) {
this.methodName();
}
}
I'm using Jest as my testing framework, which includes jest.fn()
for mocks/spies. I've read that this would be fairly trivial to test with Sinon, by doing something like the following:
sinon.spy(Component.prototype, "methodName");
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
I'm trying to recreate this with Jest like so:
Component.prototype.methodName = jest.fn();
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
This code fails and throws the following error:
jest.fn() value must be a mock function or spy.
Received:
function: [Function bound mockConstructor]
Is it possible to test this functionality with Jest? And if so, how?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…