Test Jest : corriger l'erreur Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout ?

Au fur et à mesure que les possibilités de développement des applications web se sont élargies, le besoin de bien tester son application pour détecter et corriger les problèmes est devenu une nécessité. Certains frameworks web possèdent aujourd'hui leur système pour implémenter des tests. Il existe même des frameworks spécialisés dans la création et l'utilisation de tests. Jest en fait partie. Ce framework JavaScript est conçu pour tester des applications créées avec d'autres frameworks JavaScript, comme React ou Angular. Si lors de vos tests, vous rencontrez le message d'erreur "Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout", alors vous devez modifier la configuration du framework.

Lorsque vous utilisez un timeout dans le code de vos tests, notamment avec la fonction test(), celui-ci doit être obligatoirement égal ou plus court que la valeur configurée dans le framework. Elle est par défaut égale à 5 secondes. Si vous mettez plus de temps, alors vous obtiendrez le message d'erreur "Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout". Il est possible de changer cette configuration au sein de vos tests. Vous devez pour cela appeler la fonction "setTimeOut()" du framework et lui indiquer en paramètre le nombre de millisecondes que l'on peut attendre.

//On configure un temps d'attente maximal de 20 secondes
jest.setTimeout(20000)

Si vous souhaitez que cette modification soit paramétrée dans le framework pour que tous vos tests l'utilisent, vous devez éditer le fichier de configuration. Il s'agit du fichier "test.config.js". Dans la directive "module.exports", ajoutez l'instruction"setupFilesAfterEnv" avec un nom de fichier JavaScript. Ensuite, écrivez dans ce fichier l'instruction qui modifie le timeout. La configuration sera alors appliquée à l'ensemble du framework.

// jest.config.js
module.exports = {
  // On indique le chemin vers le fichier de configuration
  setupFilesAfterEnv: ['./jest.setup.js']
}

//Dans le fichier de configuration, on ajoute la directive pour changer la valeur du timeout
jest.setTimeout(20000)

JavaScript