Ho scritto test per tutti i miei eventi (e tutto il resto ovviamente) ma non riesco a verificare che questo.props.onClick (questo) sia stato chiamato su un componente figlio.Che cosa dovrei testare esattamente quando chiami React's this.props.onClick (this) in Jest?
mio componente figlio ha il seguente codice:
closeModal: function() {
this.props.onClick(this);
},
render: function() {
return (
<i className="close-icon" onClick={this.closeModal}></i>
)
}
e il genitore sta ascoltando in questo modo:
onCloseModal: function() {
this.replaceState({
modalStatus: 'hidden'
});
},
render: function() {
return (
<QuestionModal modalStatus={this.state.modalStatus} onClick={this.onCloseModal} />
)
}
so come testare evento click del genitore e so come richiama anche l'evento click del pulsante del bambino nei test, ma non sono sicuro di cosa dovrei testare esattamente.
Se ho usato Sinon e Jasmine, avrei stubato il metodo closeModal e controllato che fosse chiamato. Posso farlo con Jest e se sì, come esattamente?
UPDATE
ho provato a scrivere un test basato su di @ PhilVarg risposta, ma non sto ottenendo molto lontano come io non sono in grado di prendere in giro closeModal.
Ecco la mia prova:
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();
Gli errori di test con Funzione Dovrebbe essere chiamato. e closeModal non sono presi in giro ma vengono comunque eseguiti (al momento è presente un registro della console). Ci sono stato tutto il pomeriggio ma non sono stato in grado di capirlo. Qualsiasi aiuto sarebbe molto apprezzato.
Vorrei solo controllare che lo stato sia sostituito. –
Sì, lo sto verificando sul componente principale, ma voglio anche verificare che il clic sul componente figlio faccia ciò che dovrebbe. – alengel