0
votes

cela.Props n'est pas une fonction (rendu peu profond)

J'ai des difficultés à tester mon composant (hérité) avec Jest / Enzyme. Il ressemble à ceci: xxx pré>

Les méthodes sont transmises comme des accessoires! Strong> dans ce cas lorsque la valeur change, poignée code> sera appelé et ceci.props ['Dropdown1'] (valeur) code> est appelé. p>

et mon test ressemble à ceci: p>

"devDependencies": {
    ...
    "enzyme-to-json": "^3.4.0",
    "jest": "^24.9.0",
    "react": "^16.9.0",
    "react-dom": "^16.9.0",


4 commentaires

Où passez-vous la fonction du nom ProP?


Bind poignées de main fonction aussi


En plus de cela, j'éviterais généralement le rendu peu profond pour les tests d'interaction. Utilisez montage .


Bonjour, devrait être l'exportation Bouton Const = (accessoires) .. pas l'exportation de bouton const = ({access})


3 Réponses :


0
votes

Ce n'est pas un problème dans votre test, mais dans votre composant. L'erreur est probablement probablement dans ceci.props [nom] (valeur); , je ne pense pas que ce soit ce que vous voulez faire. Somettin comme ceci.props.save (valeur) semble plus cohérent.


0 commentaires

0
votes

Ajoutez ceci à votre constructeur:

this.handleSelect = this.handleSelect.bind( this );


4 commentaires

Ah, je vois. Quels accessoires passez-vous à ce composant?


Je passe plusieurs méthodes au composant correspondant au nom de la liste déroulante. Donc, dans ce cas ceci.props ['Dropdown1] est passé et appelé lorsque la valeur de liste déroulante change.


Si vous imprimez Ceci.Props ['Dropdown1'] Dans Handleselect, vous donne-t-il une fonction?


Cela fonctionne également autrement et n'échoue-t-il que dans le test?



3
votes

On dirait que vous faites un test de l'unité au lieu d'un test d'intégration.

Normalement, vous devez tester le composant avec une fonction moquée comme pour les meilleures pratiques, pas les méthodes réelles des accessoires. Et vous pouvez également tester les fonctions des accessoires à différents endroits où il est défini.

Donc de votre contexte, vous pouvez vous moquer de poignée avec jest.fn () et juste test s'il est appelé lorsque vous mettez à jour la liste déroulante. évaluer. xxx


1 commentaires

C'est ce que j'essayais de comprendre! Merci beaucoup!