Il doit y avoir un moyen simple de faire cela, mais je ne trouve nulle part la syntaxe documentée. J'ai un composant React avec un accessoire que j'aimerais me moquer de Jest comme ceci:
jest.mock('./common/MultiSelect', 'MultiSelect');
Cela fonctionne, sauf que je me retrouve avec un avertissement React encombrant mes résultats de test:
Avertissement: propriété inconnue
options
sur la balise. Supprimez cet accessoire de l'élément.
Le composant dont je me moque a un accessoire d'options, et je me fiche de la façon dont il est rendu, alors comment puis-je m'en moquer de manière à ne pas lancer l'avertissement? J'ai essayé d'utiliser React.createElement dans la maquette et de renvoyer un tableau avec les arguments name et props sans fin.
Le composant que je veux simuler est utilisé comme ceci:
<MultiSelect
options={['option 1', 'option 2']}
/>
Après avoir joué avec cela, j'ai réalisé que la syntaxe était incorrecte pour mon composant retourné. Se moquer comme ça marche:
jest.mock('../../../../../common/components/MultiSelect/MultiSelect', () => () => <div />);
On ne s'en moque pas comme ça (c'est ce que je faisais):
jest.mock('../../../../../common/components/MultiSelect/MultiSelect', () => <div />);
L'avertissement m'a même dit le problème, mais je l'ai mal interprété:
Avertissement: React.createElement: type n'est pas valide - attend une chaîne (pour les composants intégrés) ou une classe/fonction (pour les composants composites ) mais got: object. Vérifiez la méthode de rendu de
Termination
.