toggleSort
является свойством экземпляра, поэтому вам придется смоделировать использование экземпляра, поскольку он не существует в прототипе класса.
onClick
напрямую связан с this.toggleSort
, поэтому вам придется либо принудительно выполнить повторную визуализацию, чтобы она снова была привязана к вашему шпиону:
it("should work with spy", () => {
const component = shallow(<Hello />);
const spy = jest.spyOn(component.instance(), "toggleSort");
component.setState({}); // <= force re-render (sometimes component.update() isn't enough)
component
.find(".button")
.at(0)
.simulate("click");
expect(spy).toHaveBeenCalled(); // Success!
});
... или вызовите его, используя функцию стрелки, чтобы вызывалось текущее значение this.toggleSort
:
<button type="button" className="button" onClick={() => this.toggleSort()} />
... который затем можно проверить следующим образом:
it("should work with spy", () => {
const component = shallow(<Hello />);
const spy = jest.spyOn(component.instance(), "toggleSort");
component
.find(".button")
.at(0)
.simulate("click");
expect(spy).toHaveBeenCalled(); // Success!
});