web-dev-qa-db-fra.com

Est-ce que Jest avale les instructions console.log? est-ce qu'il y a une façon de changer cela?

Est-ce que Jest avale console.log production?

// __tests__/log.test.js

it('logs', () => {
  console.log('hey') // expect to see "hey" printed in terminal
})

// terminal output
$ jest --forceExit
PASS  __tests__/log.test.js
✓ logs (1ms) # where's "hey"?

La principale raison pour laquelle je m'inquiète est que j'écris des trucs asynchrones beforeAll et afterAll, et je veux utiliser les instructions console.log pour déboguer l'ordre des événements.

21
Joseph Fraley

Cela semble être un problème en cours .

Avec Node 10.7.0 et Jest 23.4.1, en ajoutant verbose: false à la plaisanterie config ( par cette suggestion ) a fonctionné pour moi.

Modifier

Maintenant que je suis allé à Jest 23.6, je dois également passer TERM=dumb comme variable d'environnement, selon la réponse de Tamlyn.

10
Derek Hill

Le problème est que j'utilisais jest --forceExit. Le modèle de journalisation de Jest enregistre tous les journaux et les recrache plus tard. --forceExit provoque le processus de mise en liberté sous caution avant qu'il n'atteigne le point de sortie des journaux.

7
Joseph Fraley

Mise à jour : ce problème devrait être corrigé à partir de Jest 24 .

Une autre solution partielle au bug actuel affectant les tests dans --watch le mode est de passer TERM=dumb comme variable d'environnement.

TERM=dumb jest --watch

Cela a un petit prix car il n'efface plus la console avant chaque test, vous devez donc faire défiler pour voir les résultats.

7
Tamlyn