Mocker les objets du langage JavaScript
Table des matières
La librairie Vitest contient des "helpers" qui facilitent l'écriture des tests. Ils sont accessibles avec l'instruction vi
.
L'une des fonctions de cette libraire est vi.spyOn
. Elle permet de mocker et d'écouter les méthodes des objets du langage JavaScript (exemples : Math.random
, Console.log
, Date.now
, etc.).
vi.SpyOn pour écouter
L'écoute permet, entre autre, de vérifier l'interaction avec les objets du langage JavaScript.
Par exemple, soit l'échantillon de code ci-dessous provenant d'un composant. L'un des comportements du composant est d'afficher dans la console le titre d'un film cliqué dans une liste.
...
console.log(
"Événement 'click' sur film. ",
movie.title
)
...
Pour vérifier le comportement, on peut tester l'interaction que le composant a avec l'objet console, c’est-à-dire de savoir si console.log
est appelé avec les bonnes informations. On pourrait écrire un test qui ressemble à :
// Arrange
// ... ici code de mise en place du test, avec par exemple, la déclaration de
// expectedMovie utilisé ci-dessous et la configuration de mock utilisé
// par le composant ...
const spyConsole = vi.spyOn(console, 'log')
// Action
// ... ici code qui utilise le composant afin de vérifier un comportement ...
// Assert
expect(spyConsole).toHaveBeenCalledWith(
expect.anything(),
expectedMovie.title,
)
vi.SpyOn pour mocker
La méthode mockReturnValue
utilisé avec vi.spyOn
permet de modifier le comportement d'un objet JavaScript qui est utilisé dans le code à tester. Par exemple, pour configurer Math.random
afin de retourner toujours la même valeur :
const randomizedNumber = 4
vi.spyOn(Math, 'random').mockReturnValue(randomizedNumber)
const dice = new DiceComponent()
var response = dice.generateNumber()
expect(response).equal(randomizedNumber)