ฟังก์ชัน assert.rejects รอ promise จาก async function asyncfn หาก asyncfn เป็นฟังก์ชัน จะเรียกทันทีและรอ promise คืนมา จากนั้นตรวจสอบว่า promise ถูก reject หรือไม่
ไวยากรณ์
assert.rejects(asyncfn, [error], [message])
พารามิเตอร์
- asyncfn – async function ที่คาดว่าจะ reject
- error – Class, RegExp, validation function หรือ object สำหรับตรวจสอบ error (ทางเลือก)
- message – ข้อความผู้ใช้กำหนด (ทางเลือก)
ตัวอย่าง: การ reject ที่ผิดพลาด (assert.strictEqual ล้มเหลวก่อน)
const assert = require('assert').strict;
(async () => {
assert.strictEqual(21, 20); // นี้จะโยน error ทันที
await assert.rejects(
async () => { throw new TypeError('Value passed is Incorrect !'); },
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Incorrect value');
return true;
}
).then(() => { console.log("This is a reject demo"); });
})();
ผลลัพธ์
โยน UnhandledPromiseRejectionWarning เนื่องจาก assert.strictEqual(21,20) ล้มเหลวก่อนถึง assert.rejects
ตัวอย่าง: ใช้งานถูกต้อง
const assert = require('assert').strict;
(async () => {
assert.strictEqual(21, 21);
await assert.rejects(
async () => { throw new TypeError('Value passed is Incorrect !'); },
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Value passed is Incorrect !');
return true;
}
).then(() => { console.log("This is a reject demo success"); });
})();
ผลลัพธ์
This is a reject demo success