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
getJest
seluruhnya. Jika orang ingin menggunakan Jest versi non-lokal tanpa menjalankan npm install
, saya tidak yakin mengapa paket harus peduli?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.Error
untuk membuat debugging lebih mudah - Penanganan kesalahan bawaan Node jauh lebih eksplisit daripada console.error
diikuti oleh process.exit(1)
.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.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:
process.exit(1)
.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?
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?