توفر وحدة assert المدمجة في Node.js إطار تأكيدات للتحقق من الثوابت في الاختبارات وعمليات التحقق وقت التشغيل.
التأكيدات الصارمة (موصى به)
استورد دائماً assert/strict في Node.js الحديث لفرض المساواة الصارمة (===):
const assert = require('assert/strict');
// أو import assert from 'node:assert/strict';
اختبار القيمة المنطقية والمساواة
// التحقق من كون القيمة منطقية صحيحة (truthy)
assert(val, 'Expected value to be truthy');
assert.ok(val, 'اسم مستعار لـ assert()');
// المساواة الصارمة (===)
assert.equal(actual, expected);
assert.notEqual(actual, expected);
// المساواة العميقة الصارمة للكائنات
assert.deepEqual({ a: 1, b: [2] }, { a: 1, b: [2] });
assert.notDeepEqual({ a: 1 }, { a: 2 });
معالجة الأخطاء والاستثناءات
assert.throws()
يتحقق من أن الدالة ترمي الخطأ المتوقع:
assert.throws(
() => {
throw new TypeError('Invalid parameter');
},
{
name: 'TypeError',
message: 'Invalid parameter'
}
);
assert.doesNotThrow()
يتحقق من أن الكتلة تعمل دون رمي استثناء غير معالج:
assert.doesNotThrow(() => {
safeOperation();
});
التأكيدات غير المتزامنة
// التحقق من رفض الوعد (Promise rejection)
await assert.rejects(
async () => {
await fetchInvalidUrl();
},
{
name: 'TypeError'
}
);
// التحقق من نجاح الوعد دون رفض
await assert.doesNotReject(async () => {
await fetchValidUrl();
});