web-dev-qa-db-fra.com

peut plaisanter le journal de la console de sortie dans la sortie du bloc de test

Donc, si je mets un console.log dans un test le console.log apparaîtra après les tests, par exemple.

  authentication.spec.js
    register
      ✓ should be able to insert (128ms)
      ✓ should fail because of duplicate (100ms)
      ✓ should have user id assigned (1ms)
    login
      ✓ should be able to login for correct user (117ms)
      ✓ should fail for incorrect user (14ms)

  console.log tests/unit/authentication.spec.js:110
    we can see a message

Ce que j'aimerais voir à la place, c'est quelque chose comme:

  authentication.spec.js
    register
      ✓ should be able to insert (128ms)
      ✓ should fail because of duplicate (100ms)
      ✓ should have user id assigned (1ms)
    login
      ✓ should be able to login for correct user (117ms)
        console.log tests/unit/authentication.spec.js:110
           we can see a message
      ✓ should fail for incorrect user (14ms)

Alors le console.log devrait apparaître avec ✓ should be able to login for correct user dans ce cas

Lorsque j'utilisais Mocha, j'utilisais mocha-logger

11
A. Lau

Pour autant que je sache, ce n'est pas facilement possible, bien que quelques endroits pour chercher plus d'informations (pas prêts à l'emploi):

Jest permet d'utiliser des reporters personnalisés: https://jestjs.io/docs/en/configuration.html#reporters-array-modulename-modulename-options , afin que vous puissiez écrire votre propre reporter et afficher la sortie différemment. Pour le moment, bien que vous n'obteniez pas de mises à jour pour des tests séparés, juste des combinaisons de test, voici un problème créé par Dan Abramov: https://github.com/facebook/jest/issues/6616 .

Depuis le fil github ci-dessus - L'interface Reporter ressemble maintenant à:

export default class BaseReporter {
  onRunStart(results: AggregatedResult, options: ReporterOnStartOptions) {}

  // these are actually for the test suite, not individual test results
  onTestStart(test: Test) {}
  onTestResult(test: Test, testResult: TestResult, results: AggregatedResult) {}

  onRunComplete(contexts: Set<Context>, results: AggregatedResult ): ?Promise<void> {}
}

Je n'ai pas trouvé de moyen prédéfini de passer les paramètres du test dans l'objet testResult. Vous êtes donc principalement limité à la journalisation des informations en fonction des noms de test. Voici un exemple de propriété testResult à l'intérieur de l'objet testResult:

testResults:
  [ { ancestorTitles: [Array],
       duration: 5,
       failureMessages: [],
       fullName: 'add should add two numbers',
       location: null,
       numPassingAsserts: 0,
       status: 'passed',
       title: 'should add two numbers' } ],

Comme vous pouvez le voir, ce sont toutes les informations que le reporter standard utilise: nom du test, durée, statut. Pour référence, le reporter par défaut est ici: https://github.com/facebook/jest/blob/7b7fd01350/packages/jest-cli/src/reporters/default_reporter.js

8
Georgy

Oui, vous pouvez le faire enregistrer. Vous devrez peut-être ajouter --verbose false à package.json "test";

Ex: "scripts": { "test": "jest --watch --verbose false" }

Voir les détails ici sur github pour les bugs

3
nircraft