How can I spy on a class property arrow function using Jest? I have the following example test case which fails with the error Expected mock function to have been called.
:
import React, {Component} from "react";
import {shallow} from "enzyme";
class App extends Component {
onButtonClick = () => {
// Button click logic.
};
render() {
return <button onClick={this.onButtonClick} />;
}
}
describe("when button is clicked", () => {
it("should call onButtonClick", () => {
const app = shallow(<App />);
const onButtonClickSpy = jest.spyOn(app.instance(), "onButtonClick");
const button = app.find("button");
button.simulate("click");
expect(onButtonClickSpy).toHaveBeenCalled();
});
});
I can make the test pass by changing the button's onClick
prop to () => this.onButtonClick()
but would prefer not to change my component implementation just for the sake of tests.
Is there any way to make this test pass without changing the component implementation?