Niedawno chciałem przetestować, że niektóre niestandardowe metody są warunkowo wywoływane w metodzie componentDidMount
komponentu React.Używanie Jest do śledzenia wywołania metody w componentDidMount
componentDidMount() {
if (this.props.initOpen) {
this.methodName();
}
}
Używam żartem jak mój ramach testów, które obejmuje jest.fn()
dla kpi/szpiegów. Czytałem, że byłoby to dość trywialne do testowania z Sinon, wykonując coś tak:
sinon.spy(Component.prototype, "methodName");
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Próbuję odtworzyć to z żartem tak:
Component.prototype.methodName = jest.fn();
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Ten kod kończy się niepowodzeniem i generuje następujący błąd:
jest.fn() value must be a mock function or spy.
Received:
function: [Function bound mockConstructor]
Czy można przetestować tę funkcję za pomocą Czy? A jeśli tak, to w jaki sposób?
Dziękujemy! Wygląda na to, że pojawił się w 19.0.0, zaledwie kilka miesięcy temu. Nie mogę uwierzyć, że pominąłem to w dokumentacji. – seansean11
Serdecznie zapraszamy – Jonathan
Czy wywoła on funkcję 'methodName()' w Komponencie, czy tylko ją udaje? – prime