You’re browsing the documentation for Vue Test Utils for Vue v2.x and earlier.
To read docs for Vue Test Utils for Vue 3, click here.
Utilisation avec TypeScript
Un exemple de projet pour cette installation est disponible sur GitHub.
TypeScript est un superset populaire de JavaScript qui ajoute des types et des classes au dessus du JS normal. Vue Test Utils inclut les types dans le package distribué, il fonctionne donc bien avec TypeScript.
Dans ce guide, nous expliquerons comment configurer un dispositif de test pour un projet TypeScript en utilisant Jest et Vue Test Utils à partir d'une configuration de base de Vue CLI TypeScript.
Ajout de TypeScript
Vous devez d'abord créer un projet. SI vous n'avez pas installé Vue CLI, installez-le globalement :
$ npm install -g @vue/cli
Et créer un projet avec :
$ vue create hello-world
Dans l’invite du CLI, choisissez l'option Manually select features
, sélectionnez TypeScript et appuyez sur la touche enter. Cela créera un projet avec TypeScript déjà configuré.
NOTE
Si vous souhaitez obtenir un guide plus détaillé sur la configuration de Vue avec TypeScript, consultez le guide de démarrage de Vue avec TypeScript.
L'étape suivante consiste à ajouter Jest au projet.
Mise en place de Jest
Jest est un outil de test développer par Facebook, visant à fournir une solution de test unitaire sur batterie. Vous pouvez en savoir plus sur Jest en consultant sa documentation officielle.
Installez Jest et Vue Test Utils :
$ npm install --save-dev jest @vue/test-utils
Définissez ensuite un script test:unit
dans le fichier package.json
.
// package.json
{
// ..
"scripts": {
// ..
"test:unit": "jest"
}
// ..
}
Traitement des composants monofichiers dans Jest
Pour apprend à Jest comment traiter les fichiers *.vue
, nous devons installer et configurer le préprocesseur vue-jest
:
npm install --save-dev vue-jest
Ensuite, créez un bloc jest
dans package.json
:
{
// ...
"jest": {
"moduleFileExtensions": [
"js",
"ts",
"json",
// dites à Jest de gérer les fichiers `*.vue`
"vue"
],
"transform": {
// traiter les fichiers `*.vue` avec `vue-jest`
".*\\.(vue)$": "vue-jest"
},
"testURL": "http://localhost/"
}
}
Configuration de TypeScript pour Jest
Afin d'utiliser les fichiers TypeScript dans les tests, nous devons configurer Jest pour qu'il compile le TypeScript. Pour cela, nous devons installer ts-jest
:
$ npm install --save-dev ts-jest
Ensuite, nous devons dire à Jest de traiter les fichiers de test TypeScript avec ts-jest
en ajoutant une entrée sous jest.transform
dans package.json
:
{
// ...
"jest": {
// ...
"transform": {
// ...
// traiter les fichiers `*.ts` avec `ts-jest`
"^.+\\.tsx?$": "ts-jest"
}
// ...
}
}
Placement des dossiers de test
Par défaut, Jest récupère récursivement tous les fichiers qui ont une extension .spec.js
ou .test.js
dans l'ensemble du projet.
Pour exécuter des fichiers de test avec une extension .ts
, nous devons modifier le testRegex
dans la section de configuration du fichier package.json
.
Ajoutez ce qui suit dans le champ jest
du fichier package.json
:
{
// ...
"jest": {
// ...
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$"
}
}
Jest recommande de créer un répertoire __tests__
juste à côté du code testé, mais n'hésitez pas à structurer vos tests comme bon vous semble. Attention, Jest crée un répertoire __snapshots__
à côté des fichiers de test qui effectuent les tests de snapshot.
Faire un test unitaire
Maintenant que le projet est mis en place, il est temps d'écrire un test unitaire.
Créez un fichier src/components/__tests__/HelloWorld.spec.ts
, et ajoutez le code suivant :
// src/components/__tests__/HelloWorld.spec.ts
import { shallowMount } from '@vue/test-utils'
import HelloWorld from '../HelloWorld.vue'
describe('HelloWorld.vue', () => {
test('renders props.msg when passed', () => {
const msg = 'new message'
const wrapper = shallowMount(HelloWorld, {
propsData: { msg }
})
expect(wrapper.text()).toMatch(msg)
})
})
C'est tout ce qui faut faire pour que TypeScript et Vue Test Utils travaillent ensemble !