Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah Mocha's expect.to.throw Gagal Menangkap Ralat Saya yang Dijangka?

Mengapakah Mocha's expect.to.throw Gagal Menangkap Ralat Saya yang Dijangka?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 03:29:09937semak imbas

Why is Mocha's expect.to.throw Failing to Catch My Expected Errors?

Masalah dengan jangkaan Mocha untuk membuang Ralat yang Hilang Dibuang

Apabila menggunakan expect.to.throw Chai untuk menguji pengecualian dalam Nod anda .js, anda mungkin menghadapi hasil yang tidak dijangka. Jika ujian gagal disebabkan ralat yang tidak ditangkap, tetapi membungkus ujian dalam percubaan...tangkap dan menegaskan ralat yang ditangkap berjaya, anda mungkin mempersoalkan fungsi expect.to.throw.

Inti isu terletak pada cara yang diharapkan.to.throw beroperasi. Untuk menguji kemunculan pengecualian secara berkesan, ia memerlukan fungsi sebagai input. Dengan menghantar fungsi untuk dijangkakan, ia boleh menggunakan fungsi itu dan mengesahkan jika pengecualian dinaikkan.

Dalam coretan kod yang disediakan, anda terus menghantar hasil model.get('z') untuk dijangkakan . Walau bagaimanapun, pendekatan ini melepasi nilai pulangan fungsi dan bukannya fungsi itu sendiri. Untuk membetulkannya, anda perlu membekalkan expect dengan fungsi yang melaksanakan model.get apabila dipanggil.

Kod Kemas Kini:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));

Dengan menggunakan kaedah bind, fungsi baru dicipta. Apabila dipanggil, ia memanggil model.get dengan argumen yang ditentukan, dengan itu mensimulasikan pelaksanaan model.get('z'). Ini membolehkan expect.to.throw menilai sama ada pengecualian dilemparkan semasa pelaksanaan fungsi.

Atas ialah kandungan terperinci Mengapakah Mocha's expect.to.throw Gagal Menangkap Ralat Saya yang Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn