Jest: Menjalankan `jest-cli` global seharusnya memperingatkan alih-alih kesalahan

Dibuat pada 14 Jul 2016  ·  3Komentar  ·  Sumber: facebook/jest

Panggilan process.exit(1) dipicu saat menjalankan versi Jest yang diinstal secara global menghasilkan hasil tes yang aneh - bahkan ketika semua tes lulus, proses mengembalikan kode keluar yang bukan nol, dan tidak segera jelas alasannya.

Ketika jest ditetapkan ke npm test (yang merupakan konvensi yang cukup umum), Anda mendapatkan:

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.

Tidak ada detail yang jelas (baris "Silakan jalankan ..." tidak terlihat seperti pesan kesalahan") dan tidak ada tes yang gagal, jadi debugging menjadi canggung.

Rekomendasi

  1. Saya lebih suka untuk menghapus tes untuk versi paket-lokal dari Jest dari getJest seluruhnya. Jika orang ingin menggunakan Jest versi non-lokal tanpa menjalankan npm install , saya tidak yakin mengapa paket harus peduli?
  2. Jika pengujian masih cukup berguna, ia harus menggunakan console.warn tanpa mempengaruhi kode keluar karena pengujian mungkin masih berjalan tanpa masalah, dan peringatan tersebut merupakan indikasi yang cukup bahwa keluaran mungkin tidak mencerminkan apa yang diinginkan pengguna.
  3. Jika mengembalikan kode keluar bukan nol lebih disukai, pengujian harus membuang Error untuk membuat debugging lebih mudah - Penanganan kesalahan bawaan Node jauh lebih eksplisit daripada console.error diikuti oleh process.exit(1) .
  4. Jika Anda benar-benar tidak ingin membuat kesalahan, segera panggil process.exit(1) daripada menunggu semua tes dijalankan - jika tidak apa-apa untuk menjalankan Jest secara global ketika ada ketergantungan yang ditentukan secara lokal, maka seharusnya 'tidak lari sama sekali.

Komentar yang paling membantu

@mmcgahan @cpojer Saya melihat kesalahan tidak fatal ini saat menjalankan Jest di dalam paket anak di dalam monorepo ruang kerja benang. Terasa seperti mungkin ditampilkan dalam kesalahan karena cara Anda mencari jest tidak berurusan dengan paket yang diangkat ke root monorepo?

Semua 3 komentar

Terima kasih telah mengemukakan hal ini dan atas penjelasan mendetail tentang masalah ini. Sejujurnya, saya sendiri kesal dengan hal ini dan itu pasti membuat test suite Jest sedikit lebih sulit untuk ditangani.

Saya juga setuju cara kerjanya saat ini tidak masuk akal jika Jest tetap menjalankan tes. Saya minta maaf Anda membuang-buang waktu untuk ini.

Apakah Anda bersedia mengirim permintaan tarik?

Saran saya adalah sebagai berikut:

  • Hapus process.exit(1) .
  • Lakukan process.on('exit', () => console.log(chalk.red('The error message '))) sehingga kami mendapatkan pesan merah yang bagus di akhir uji coba yang memberi tahu Anda bahwa ada sesuatu yang tidak berjalan sebagaimana mestinya.

Ini akan memungkinkan orang untuk menggunakan versi Jest yang salah (yang tidak disarankan, karena mungkin ada perubahan yang melanggar) tetapi itu akan tetap menyelesaikan uji coba dengan benar dan akan mencetak pesan di bagian bawah. Bagaimana menurutmu?

@cpojer Itu bekerja untuk saya, terima kasih atas tanggapan cepatnya! Akan mengirimkan PR segera

@mmcgahan @cpojer Saya melihat kesalahan tidak fatal ini saat menjalankan Jest di dalam paket anak di dalam monorepo ruang kerja benang. Terasa seperti mungkin ditampilkan dalam kesalahan karena cara Anda mencari jest tidak berurusan dengan paket yang diangkat ke root monorepo?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat