Vous vous demandez peut-être: une autre bibliothèque de tests React? Tant de choses ont été couvertes sur CSS-Tricks (en fait, j'ai publié un article sur la plaisanterie et l'enzyme), n'y a-t-il pas assez d'options?
Cependant, React-Testing-Library est plus qu'une simple bibliothèque de tests. C'est une bibliothèque de tests, oui, mais elle est construite sur un principe fondamental, ce qui le rend différent des autres bibliothèques de tests.
Plus vos tests simulent comment le logiciel est utilisé, plus il peut vous apporter de confiance.
Il essaie de tester la façon dont les utilisateurs utilisent votre application. En fait, il est mis en œuvre de sorte que même si vous refactez les composants, les tests ne se casseront pas. Je sais que nous avons eu cela à un moment donné sur notre voyage React.
Nous passerons du temps ensemble à écrire des tests pour une application à faire simple que j'ai construite en utilisant React-Testing-Library. Vous pouvez cloner le référentiel localement:
git clone https://github.com/kinsomicrote/todoapp-test.git
Si vous faites cela, installez les packages requis:
## fil Yarn Add - Dev React-Testing-Library Jest-Dom ## npm Installation de NPM - Save-Dev React-Testing-Library Jest-Dom
Si vous voulez savoir pourquoi JEST est ici, nous l'utilisons pour les affirmations. Créez un dossier nommé __test__
dans le répertoire SRC et créez un nouveau fichier nommé App.test.js
Prendre un instantané
Tests instantanés Les tests d'enregistrement effectués sur les composants testés comme moyen de visualiser visuellement les différences entre les changements.
Lorsque nous exécutons ce test pour la première fois, nous prenons le premier instantané de l'apparence du composant. Ainsi, le premier test passera certainement, car il n'y a pas d'autre instantané à comparer à cela pour indiquer que quelque chose échoue. Il échoue uniquement lorsque nous apportons de nouvelles modifications au composant en ajoutant de nouveaux éléments, classes, composants ou texte. Ajoutez du contenu qui n'existait pas lorsque l'instantané a été créé ou lorsque la dernière mise à jour a été mise à jour pour la dernière fois.
Les tests d'instantané seront le premier test que nous avons écrit ici. Ouvrez le fichier App.test.js
et faisons-le ressembler à ceci:
importer réagir à partir de «réagir»; Importer {rendu, nettoyage} à partir de "React-Testing-Library"; Importer "JEST-DOM / EXTER-EXPECT"; Importer l'application à partir de './app'; après l'enseignement (nettoyage); it ("correspond à Snapshot", () => { const {asfragment} = render (<app></app> )); attendre (asfragment ()). Tomatchsnapshot (); });
Cela importe les packages nécessaires que nous utilisons pour écrire et exécuter des tests. render
est utilisé pour afficher les composants que nous souhaitons tester. Nous utilisons cleanup
pour effacer le contenu après chaque essai exécuté - comme vous pouvez le voir dans afterEach(cleanup)
.
En utilisant asFragment
, nous obtenons DocumentFragment
du composant de rendu. Nous nous attendons alors à ce qu'il corresponde à l'instantané qui a été créé.
Exécutons le test pour voir ce qui se passe:
## fil test de fil ## npm test de NPM
Comme nous le savons maintenant, s'il s'agit de notre premier test, un instantané de composant est créé dans un nouveau dossier nommé __snapshots__
à l'intérieur du répertoire __tests__
. Nous obtiendrons en fait un fichier appelé App.test.js.snap
et cela ressemble à ceci:
// Jest Snapshot v1, https://goo.gl/fbaqlp exportations [`correspond à l'instantané 1`] =` <documentfragment><div> <div> <div> <h2> Ajouter Todo </h2> </div> </div> <div> <div> </div> </div> <div> <div> Ajouter une tâche </div> </div> <div> <div> <h3> Listes </h3> <ul data-test=""> <li> <div> Acheter du lait X </div> </li> <li> <div> Écrire un tutoriel X </div> </li> </ul> </div> </div> </div> </documentfragment> `;
Maintenant, testons les éléments et événements DOM
Notre application contient deux éléments à faire affichés par défaut lorsque l'application est exécutée pour la première fois. Nous voulons nous assurer qu'ils apparaissent lorsque la première application s'exécute, donc pour tester cela, nous devons localiser la liste non ordonnée (<ul></ul>
) et vérifier la longueur. Nous nous attendons à ce que la longueur soit égale à 2 - le nombre d'éléments.
it ('il affiche des éléments de TODO par défaut', () => { const {getByTestid} = render (<app></app> )); const todolist = getByTestid ('todos-ul'); attendre (todolist.children.length) .tobe (2); });
Nous utilisons getByTestId
dans cet extrait de code pour extraire l'ID de test du composant App
. Ensuite, nous avons défini todoList
pour localiser todos-ul
. Cela devrait retourner 2.
En utilisant ce que nous avons appris jusqu'à présent, voyez si vous pouvez écrire un test qui affirme que l'utilisateur peut saisir des valeurs dans le champ de saisie. Voici les actions que vous devez faire:
- Obtenez des champs d'entrée
- Définir les valeurs des champs d'entrée
- Événement de changement de déclenchement
- Affirmer que la valeur du champ de saisie est la même que la valeur que vous définissez à l'étape 2
Ne regardez pas ma réponse ci-dessous! Passez autant de temps que possible.
Toujours continuer? merveilleux! Je vais aller prendre une tasse de café et revenir bientôt.
Eh bien, café. ☕️
Oh, tu as terminé! vous êtes génial. Comparons les réponses. Le mien ressemble à ceci:
it ('permette une entrée', () => { const {getByTestid, fireevent} = rendu (<app></app> )); Selon item = 'Learn React'; const toDoInPuledElement = GetByTestid («Todo-Input»); ToDoInPuledElement.Value = item; FireEvent.Change (TodoinPutellement); attendre (tooinInPulements.Value) .tobe («Learn React»); });
En utilisant getByTestId
, j'ai pu extraire l'ID de test dans l'application. Ensuite, je crée une variable, je la définis sur la chaîne "Learn React", et en fais la valeur du champ de saisie. Ensuite, j'utilise son ID de test pour obtenir le champ de saisie et déclencher l'événement de modification après avoir réglé la valeur du champ de saisie. Après cela, j'affirme que la valeur du champ de saisie est en effet "Read React".
Est-ce cohérent avec votre réponse? Si vous avez d'autres méthodes, veuillez laisser un commentaire!
Ensuite, testons si nous pouvons ajouter de nouveaux éléments à faire. Nous devrons obtenir les champs d'entrée, le bouton pour ajouter un nouveau projet et la liste non ordonnée, car ce sont tous les éléments nécessaires pour créer un nouveau projet.
Nous définissons une valeur pour le champ de saisie, puis déclenchez le bouton CLIC pour ajouter la tâche. Nous pouvons le faire en utilisant getByText
pour obtenir le bouton - en déclenchant l'événement Click sur l'élément DOM avec le texte "Ajouter la tâche", nous devrions être en mesure d'ajouter un nouvel élément de tâche.
Affirmons que le nombre d'éléments enfants (éléments de liste) dans un élément de liste non ordonné est égal à 3. Cela suppose que la tâche par défaut est toujours intacte.
it ('ajoute un nouvel élément de todo', () => { const {GetByText, GetByTestid, Fireevent} = render (<app></app> )); const toDoInPuledElement = GetByTestid («Todo-Input»); const todolist = getByTestid ('todos-ul'); toDoinPuledElement.Value = 'Learn React'; FireEvent.Change (TodoinPutellement); FireEvent.Click (GetByText ('Ajouter une tâche')); attendre (todolist.children.length) .tobe (3); });
Très bien, non?
Ce n'est qu'une façon de tester dans React
Vous pouvez essayer React-Testing-Library dans la prochaine application React. La documentation dans l'entrepôt est très détaillée et - comme la plupart des outils - est le meilleur endroit pour commencer. Kent C. Dodds l'a construit et il y a un cours complet sur les tests sur Frontend Masters (nécessite un abonnement), qui couvre également les tenants et aboutissants de la lubrale de test de réaction.
Autrement dit, il s'agit d'une ressource de test pour React. Bien sûr, il existe d'autres ressources, mais j'espère que vous avez vu du contenu maintenant et que vous souhaitez l'essayer, et bien sûr, vous devriez également utiliser les ressources qui sont les meilleures pour votre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

CSS Grid est un outil puissant pour créer des dispositions Web complexes et réactives. Il simplifie la conception, améliore l'accessibilité et offre plus de contrôle que les méthodes plus anciennes.

L'article traite de CSS Flexbox, une méthode de mise en page pour l'alignement et la distribution efficaces de l'espace dans les conceptions réactives. Il explique l'utilisation de Flexbox, la compare à la grille CSS et détaille la prise en charge du navigateur.

L'article traite des techniques de création de sites Web réactifs à l'aide de CSS, y compris des balises de méta de la fenêtre, des grilles flexibles, des médias fluides, des requêtes multimédias et des unités relatives. Il couvre également l'utilisation de la grille CSS et de Flexbox ensemble et recommande le cadre CSS

L'article traite de la propriété CSS-Box-Sizing, qui contrôle comment les dimensions des éléments sont calculées. Il explique des valeurs telles que la boîte de contenu, la boîte de bordure et la boîte de padding, et leur impact sur la conception de la disposition et l'alignement de la forme.

L'article discute de la création d'animations à l'aide de CSS, de propriétés clés et de combinaison avec JavaScript. Le principal problème est la compatibilité du navigateur.

L'article discute de l'utilisation de CSS pour les transformations 3D, les propriétés clés, la compatibilité du navigateur et les considérations de performances pour les projets Web. (Compte de caractère: 159)

L'article discute de l'utilisation des gradients CSS (linéaire, radial, répétant) pour améliorer les visuels du site Web, l'ajout de profondeur, de concentration et d'esthétique moderne.

L'article traite des pseudo-éléments dans CSS, de leur utilisation dans l'amélioration du style HTML et des différences par rapport aux pseudo-classes. Fournit des exemples pratiques.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel
