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

Linda Hamilton
Lepaskan: 2024-11-24 03:29:09
asal
940 orang telah melayarinya

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.'));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan