Ich habe Tests für alle meine Ereignisse geschrieben (und natürlich alles andere), aber ich weiß nicht, wie ich testen kann, dass this.props.onClick (this) für eine untergeordnete Komponente aufgerufen wurde.Was genau sollte ich beim Aufruf von React's this.props.onClick (this) in Jest testen?
Mein Kind-Komponente hat den folgenden Code:
closeModal: function() {
this.props.onClick(this);
},
render: function() {
return (
<i className="close-icon" onClick={this.closeModal}></i>
)
}
und die Eltern es hört, wie so:
onCloseModal: function() {
this.replaceState({
modalStatus: 'hidden'
});
},
render: function() {
return (
<QuestionModal modalStatus={this.state.modalStatus} onClick={this.onCloseModal} />
)
}
Ich weiß, wie das Click-Ereignis der Eltern zu testen, und ich weiß, wie man Rufen Sie in den Tests auch das Klickereignis des Kindes an, aber ich bin mir nicht sicher, was ich genau testen sollte.
Wenn ich Sinon und Jasmine verwendet, würde ich die Methode closeModal stub und überprüfen, dass es aufgerufen wurde. Kann ich das mit Jest machen und wenn ja wie genau?
UPDATE
Ich habe versucht, Antwort einen Test basiert Schreiben auf @ PhilVarg ist, aber ich bin nicht sehr weit bekommen, da ich nicht in der Lage bin closeModal zu verspotten.
Hier ist mein Test:
var closeIcon,
myMock = jest.genMockFunction();
form = TestUtils.renderIntoDocument(
<QuestionForm />
);
form.closeModal = myMock;
closeIcon = TestUtils.findRenderedDOMComponentWithClass(form, 'close-icon');
TestUtils.Simulate.click(closeIcon);
expect(form.closeModal).toBeCalled();
Die Testfehler mit erwartete Funktion aufgerufen werden. und closeModal ist nicht verspottet, aber läuft immer noch (ich habe eine Konsole loggen Sie sich im Moment). Ich war den ganzen Nachmittag dabei, konnte es aber nicht herausfinden. Jede Hilfe wäre sehr willkommen.
Ich würde nur überprüfen, dass der Zustand ersetzt wird. –
Ja, ich überprüfe das auf der übergeordneten Komponente, aber ich möchte auch testen, dass der Klick auf die untergeordnete Komponente tut, was es sollte. – alengel