Dalam ujian node.js anda, anda mengalami kesukaran menggunakan expect.to Chai .lempar untuk mengesan ralat yang dilontar. Ujian secara konsisten gagal, melaporkan ralat yang dilemparkan. Walau bagaimanapun, jika anda merangkumkan ujian dalam blok cuba-tangkap dan menegaskan ralat yang ditangkap, ujian itu akan lulus.
Adakah jangkaan.buang tidak berfungsi seperti yang dijangkakan?
Untuk menyelesaikan isu ini, anda perlu lulus fungsi yang diharapkan, bukan hasil daripada fungsi tersebut panggilan:
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.'));
Dalam pendekatan asal anda, anda telah melepasi hasil panggilan model.get('z') untuk dijangkakan. Untuk menguji sama ada fungsi membuang ralat, anda mesti menyediakan fungsi untuk jangkakan untuk memanggil dirinya sendiri. Kaedah bind mencipta fungsi baharu yang, apabila dipanggil, memanggil model.get dengan argumen yang dijangkakan.
Rujuk dokumentasi yang disediakan untuk penjelasan lanjut tentang kaedah bind.
Atas ialah kandungan terperinci Mengapakah `expect.to.throw` Gagal Menangkap Ralat Lempar dalam Ujian Mocha/Chai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!