Utilisation de Jest pour espionner l'appel de méthode dans componentDidMount
Récemment, j'ai voulu tester que certains personnalisée méthode est conventionnellement appelé dans le componentDidMount
méthode de Réagir composant.
componentDidMount() {
if (this.props.initOpen) {
this.methodName();
}
}
Je suis en utilisant la Blague que mon framework de test, qui comprend jest.fn()
pour les mocks/espions. J'ai lu que ce serait trivial pour le test Sinon, en faisant quelque chose comme ce qui suit:
sinon.spy(Component.prototype, "methodName");
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Je suis en train de recréer ce avec des Blagues comme:
Component.prototype.methodName = jest.fn();
const wrapper = mount(<Component {...props} />);
expect(wrapper.instance().methodName).toHaveBeenCalled();
Ce code échoue et renvoie l'erreur suivante:
jest.fn() value must be a mock function or spy.
Received:
function: [Function bound mockConstructor]
Est-il possible de tester cette fonctionnalité avec la Blague? Et si oui, comment?
source d'informationauteur seansean11
Vous devez vous connecter pour publier un commentaire.
La clé est d'utiliser les plaisanteries
spyOn
méthode. Il devrait ressembler à ceci:Comme trouver ici par exemple: Tester si la fonction est appelée à réagir et enzyme
Veuillez noter que c'est également la meilleure pratique pour effacer le espionné fonction après chaque essai
https://facebook.github.io/jest/docs/en/jest-object.html#jestclearallmocks
Je sais que je suis un peu en retard, mais je suis tombé sur ce et suggère que, pour tester
componentDidMount
lance l'appel à votre méthode imbriquée que votre test doit ressembler à quelque chose comme:Module
Test - Bon
Si vous appelez
componentDidMount
alors votre affirmation quemethodName
a été appelé parcomponentDidMount
est plus valide.Test - Bad
Par l'écriture de l'essai, ce que vous appelez la méthode et ensuite affirmer qu'il a été appelé. Qui, bien sûr, il vous sera donné juste appelé.