Cours 14 - Mise en place de tests
Table des matières
Objectifs
- Être capable de mettre en place des tests unitaires dans Vue.js
- Comprendre le concept de tests unitaires dans Vue.js
- Être en mesure d'intégrer Vitest avec Vue.js
Déroulement
- Introduction au cours
- Retour sur l'exercice du cours passé
- Rappel de la communication entre les composants
- Guide pratique pour l'écriture de tests unitaires avec Vitest
- Exercice 14
- Si vous avez terminé, assurez-vous d'avoir consulté: Instructions asynchrones
- Conclusion
Rappel de la communication entre les composants
- La communication d'un parent vers l'enfant se fait avec les
props
. - La communication d'un enfant vers le parent se fait avec des
emits
. - Il est possible de surveiller, avec des
watchs
, si les données passées par unprops
d'un enfant ont été modifiées.
Ne jamais modifier le contenu d'un props.
"Toutes les données forment un flux de donnée descendant unidirectionnel (« one-way-down binding ») entre la propriété enfant et la propriété parente : quand la propriété du parent est mise à jour, cela va mettre à jour celle de l’enfant mais pas l’inverse. Cela empêche un composant enfant de muter accidentellement l’état du parent, ce qui rendrait le flux de données de votre application difficile à appréhender. De plus, chaque fois que le composant parent est mis à jour, toutes les props du composant enfant vont être mises à jour avec les dernières valeurs. Cela signifie que vous ne devriez pas essayer du muter une prop depuis l’intérieur d’un composant."
Guide pratique pour l'écriture de tests unitaires avec Vitest
Voici un guide étape par étape pour démarrer avec Vitest.
Configuration Initiale
Avant de commencer, assurez-vous que Vitest est installé et configuré dans votre projet. Si vous utilisez Vite, Vitest peut être facilement intégré.
Voir les instructions du cours précédant.
Écrire votre premier test
Un test unitaire typique avec Vitest suit cette structure :
// Importez les fonctions nécessaires et le composant à tester
import { describe, it, expect } from 'vitest';
import { add } from './math';
// `describe` crée un bloc pour regrouper des tests similaires
describe('add function', () => {
// `it` définit un test unique. La première chaîne est la description du test.
it('adds two numbers correctly', () => {
// Exécutez la fonction avec des valeurs spécifiques
const result = add(2, 3);
// Utilisez `expect` pour vérifier le résultat attendu
expect(result).toBe(5);
});
});
Assertions
Les assertions sont le cœur des tests unitaires. Elles vérifient si le résultat obtenu correspond à ce qui est attendu. Vitest offre une variété d'assertions, telles que :
- toContain pouvant contenir.
- toBe pour vérifier l'égalité stricte.
- toEqual pour vérifier l'égalité des objets.
- toBeTruthy pour vérifier que la valeur est vraie.
- toThrow pour s'assurer qu'une fonction lance une exception.
Tester les Composants Vue
Pour tester un composant Vue, vous pouvez utiliser @vue/test-utils en combinaison avec Vitest. Cela vous permet de monter un composant et d'interagir avec lui dans vos tests.
import { describe, it, expect } from 'vitest';
import { mount } from '@vue/test-utils';
import MyComponent from './MyComponent.vue';
describe('MyComponent', () => {
it('renders correctly', () => {
const wrapper = mount(MyComponent);
expect(wrapper.text()).toContain('Hello World');
});
});
Consulter la documentation complète sur les wrapper de test-utils
Vitest VS Vue test utils
- Vitest est un framework de test plus général qui peut être utilisé pour tester des applications JavaScript, y compris Vue.js, avec l'avantage d'être rapide et configurable. (describe, it, expect)
- Vue Test Utils est spécifiquement axée sur le test des composants Vue.js, fournissant des outils et des méthodes pour faciliter cette tâche. (mount)
- L'utilisation de Vitest pour tester des applications Vue.js peut être optimisée avec l'ajout de plugins spécifiques à Vue.
- Vue Test Utils peut être intégré à Vitest comme une bibliothèque pour le montage et la manipulation des composants Vue.js dans les tests.