โมดูล assert ใน Node.js มอบฟังก์ชันต่างๆ สำหรับการตรวจสอบเงื่อนไข (assertion) โดยฟังก์ชัน deepStrictEqual() ใช้สำหรับทดสอบความเท่ากันแบบลึก (deep equality) ระหว่างพารามิเตอร์ actual (ค่าจริง) และ expected (ค่าที่คาดหวัง) หากเงื่อนไขไม่เป็นจริง จะมีการโยนข้อผิดพลาด AssertionError
ไวยากรณ์ (Syntax)
assert.deepStrictEqual(actual, expected[, message])
พารามิเตอร์
- actual – ค่าจริงที่จะนำมาเปรียบเทียบกับค่าที่คาดหวัง
- expected – ค่าที่คาดหวังซึ่งจะนำมาเทียบกับค่าจริง
- message – ข้อความสตริงที่จะแสดงเมื่อค่าทั้งสองไม่ตรงกัน (พารามิเตอร์นี้เป็นทางเลือก)
การติดตั้งโมดูล Assert
โมดูล assert เป็นโมดูลในตัว (built-in) ของ Node.js จึงไม่จำเป็นต้องติดตั้งเพิ่มเติม แต่หากต้องการตรวจสอบเวอร์ชันล่าสุด สามารถใช้คำสั่งด้านล่างได้:
npm version assert
การนำเข้าโมดูล
const assert = require("assert");
ตัวอย่างการใช้งาน
สร้างไฟล์ชื่อ assertDeepStrict.js และคัดลอกโค้ดด้านล่าง จากนั้นรันด้วยคำสั่ง node assertDeepStrict.js
assertDeepStrict.js
// นำเข้าโมดูล assert แบบ strict
const assert = require('assert').strict;
try {
// เรียกใช้ deepStrictEqual เพื่อเปรียบเทียบออบเจกต์
assert.deepStrictEqual({ a: 3 }, { a: '3' });
console.log("No Error Occurred...");
} catch (error) {
console.log("Error: ", error);
}
ผลลัพธ์
Error: {
AssertionError [ERR_ASSERTION]: Input A expected to strictly deep-equal input B:
+ expected - actual
{
- a: 3
+ a: '3'
}
at Object. (/home/node/assertDeepStrict.js:6:9)
...
operator: 'deepStrictEqual'
}
จากตัวอย่างข้างต้น ค่าหนึ่งเป็นตัวเลข (number) อีกค่าหนึ่งเป็นสตริง (string) ทำให้เกิดข้อผิดพลาด เนื่องจาก deepStrictEqual ตรวจสอบทั้งค่าและชนิดข้อมูล (strict equality)
ตัวอย่างที่ 2: ค่าที่ตรงกันทั้งค่าและชนิด
const assert = require('assert').strict;
try {
assert.deepStrictEqual({ a: '3' }, { a: '3' });
console.log("No Error Occurred...");
} catch (error) {
console.log("Error: ", error);
}
ผลลัพธ์
No Error Occurred...
กรณีนี้ทั้งสองค่าเป็นสตริง '3' จึงผ่านการตรวจสอบโดยไม่มีข้อผิดพลาด