Les tests

Un test est un comportement à vérifier d'une unité à tester (classe, méthode ou fonction). Le test permet de vérifier que l'unité à tester répond aux besoins.

Les tests unitaires ne doivent pas être conçus en fonction de l'implémentation d'une méthode, mais plutôt en fonction du comportement attendu. Ainsi, si l'implémentation d'une méthode est modifiée ou refactorisée, le test unitaire ne devrait pas échouer tant que le comportement attendu reste inchangé.

Il faut donc éviter de voir un test comme étant le test d'une portion de code. La section action d'un test contient souvent un appel à une méthode, mais c'est le comportement de cette méthode qui est testé. L'implémentation d'une méthode peut être modifiée / refactorisée et le test devrait toujours passer.

On peut tester un comportement, en vérifiant :

Tester les valeurs

Tester les valeurs, ce peut être de :

  1. Vérifier le retour d'une fonction (ou d'une méthode). Exemple :
// Action
const result = myFunctions.stringToInt('40')
// Assert
expect(result).toBe(40)
  1. Vérifier l'état d'un objet. Exemples :
// Action
const person = new Person('John', 1985)
// Assert
expect(person.yearOfBirth).toBe(1985)

// Arrange
// ... Ici du code de mise en place pour le test...
// Action
document.querySelector('button').click()
// Assert
expect(document.querySelector('p').innerHTML).toEqual('1')

Tester les interactions

Tester l'interaction, c’est tester si un objet envoie le bon message (appel) à un autre objet. Le assert contient habituellement une instruction qui ressemble à HaveBeenCalled et ce fait habituellement avec [un mock](). Il est préférable d'utiliser ce type de test comme dernier choix, c'est-à-dire lorsque ce n'est pas possible de tester les valeurs ou l'état.