Rumah >hujung hadapan web >tutorial js >Mengapakah `expect.to.throw` Gagal Menegaskan Ralat Balingan dalam Ujian Node.js?
Chai: Menangani Elusive expect.to.throw dalam Node.js
Chai expect.to.throw boleh membuktikan membingungkan dalam Node. ujian js. Walaupun tujuannya bertujuan untuk menegaskan ralat yang dilemparkan, ia sering gagal apabila digunakan secara langsung pada coretan kod.
Memahami Isu:
Pertimbangkan contoh kes ujian:
it('should throw an error if you try to get an undefined property', function (done) { // Passing the result of model.get('z') directly fails expect(model.get('z')).to.throw('Property does not exist in model schema.'); });
Ujian ini gagal, walaupun ralat sebenarnya dilemparkan. Salah tanggapan yang biasa ialah expect.to.throw mengendalikan pengambilan semula dan penegasan ralat yang dilemparkan.
Penyelesaian: Merangkul Fungsi-Lulus:
Kunci untuk menyelesaikan masalah ini isu terletak pada lulus fungsi untuk mengharapkan.to.membuang dan bukannya hasilnya. Fungsi ini akan dilaksanakan dengan jangkaan, mencetuskan pengambilan semula dan pengesahan ralat yang dilemparkan:
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
Dalam kod yang diubah suai ini, model.get terikat pada konteks objek model dan 'z' ditetapkan sebagai hujahnya. Kemudian, fungsi yang terhasil dihantar ke expect.to.throw, memastikan ralat yang dimaksudkan ditangkap dan ditegaskan.
Dengan mengikuti pendekatan ini, anda boleh memanfaatkan kuasa penuh expect.to.throw dalam Node. js, dengan berkesan menegaskan berlakunya ralat yang dilemparkan dan memastikan keteguhan kod anda.
Atas ialah kandungan terperinci Mengapakah `expect.to.throw` Gagal Menegaskan Ralat Balingan dalam Ujian Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!