Jest: Das Ausführen von globalem `jest-cli` sollte statt eines Fehlers warnen

Erstellt am 14. Juli 2016  ·  3Kommentare  ·  Quelle: facebook/jest

Der process.exit(1) Aufruf, der beim Ausführen einer global installierten Version von Jest ausgelöst wird, führt zu seltsamen Testergebnissen – selbst wenn alle Tests erfolgreich sind, gibt der Prozess einen Exit-Code ungleich Null zurück, und es ist nicht sofort klar, warum.

Wenn jest npm test zugewiesen wird (was eine ziemlich übliche Konvention ist), erhalten Sie:

Please run `npm install` to use the version of Jest intended for this project.
...
163 tests passed (163 total in 30 test suites, run time 3.292s)
npm ERR! Test failed.  See above for more details.

Es gibt keine offensichtlichen Details (die Zeile "Bitte ausführen..." sieht nicht wie eine Fehlermeldung aus) und keine fehlgeschlagenen Tests, daher ist das Debuggen umständlich.

Empfehlungen

  1. Ich würde es vorziehen, den Test für eine paketlokale Version von Jest von getJest vollständig zu entfernen. Wenn Leute eine nicht-lokale Version von Jest verwenden möchten, ohne npm install , bin ich mir nicht sicher, warum das Paket interessiert sein sollte?
  2. Wenn der Test nützlich genug ist, um zu bleiben, sollte er console.warn ohne den Exit-Code zu beeinträchtigen, da die Tests weiterhin ohne Probleme ausgeführt werden können und die Warnung ein ausreichender Hinweis darauf ist, dass die Ausgabe möglicherweise nicht genau das widerspiegelt, was der Benutzer beabsichtigt hat.
  3. Wenn die Rückgabe eines Exit-Codes ungleich Null bevorzugt wird, sollte der Test ein echtes Error ausgeben, um das Debuggen zu vereinfachen. Die integrierte Fehlerbehandlung von Node ist viel expliziter als console.error gefolgt von process.exit(1) .
  4. Wenn Sie wirklich keinen Fehler ausgeben möchten, rufen Sie process.exit(1) sofort auf, anstatt zu warten, bis alle Tests ausgeführt wurden läuft überhaupt nicht.

Hilfreichster Kommentar

@mmcgahan @cpojer Ich jest suchen, nicht damit zu tun hat, dass Pakete in das Monorepo-Root hochgehoben werden?

Alle 3 Kommentare

Vielen Dank für den Hinweis und die ausführliche Beschreibung des Problems. Um ehrlich zu sein, habe ich mich selbst über dieses Zeug aufgeregt und es macht Jests Testsuite definitiv etwas schwieriger zu handhaben.

Ich stimme auch zu, dass die Art und Weise, wie dies derzeit funktioniert, keinen Sinn macht, wenn Jest sowieso trotzdem Tests durchführt. Es tut mir leid, dass Sie damit Zeit verschwendet haben.

Wären Sie bereit, einen Pull-Request zu senden?

Mein Vorschlag ist wie folgt:

  • process.exit(1) entfernen.
  • Machen Sie process.on('exit', () => console.log(chalk.red('The error message '))) damit wir am Ende eines Testlaufs eine schöne rote Nachricht erhalten, die Ihnen mitteilt, dass etwas nicht so ist, wie es sollte.

Es erlaubt Benutzern, die falsche Version von Jest zu verwenden (was nicht empfohlen wird, da es möglicherweise wichtige Änderungen gibt), aber es wird den Testlauf dennoch ordnungsgemäß beenden und eine Nachricht unten ausgeben. Was denken Sie?

@cpojer Das funktioniert bei mir, danke für die schnelle Antwort! Werde die PR in Kürze einreichen

@mmcgahan @cpojer Ich jest suchen, nicht damit zu tun hat, dass Pakete in das Monorepo-Root hochgehoben werden?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen