تكرار السؤال: …
الإجابة المختصرة
تكتب دوال الاختبار كـ async وتستخدم await مع الدوال المراد فحصها، وتستخدم assert.rejects لفحص الوعود التي يُتوقع فشلها.
الشرح
عند اختبار الكود غير المتزامن، يجب أن تنتظر دالة الاختبار انتهاء الـ Promise بالكامل؛ وإلا فإن الاختبار سينجح كاذباً قبل أن تكتمل العملية. لفحص حالات الخطأ، توفر مكتبات مثل node:assert دالة assert.rejects التي تتحقق من رفض الوعد ونوع رسالة الخطأ المتوقعة.
مثال بالكود
import { test } from "node:test";
import assert from "node:assert/strict";
test("throws error on invalid input", async () => {
await assert.rejects(
async () => fetchUser(-1),
{ name: "Error", message: "Invalid ID" }
);
});أخطاء شائعة
- نسيان await أمام assert.rejects مما يجعل الاختبار ينتهي مبكراً دون التحقق الحقيقي من الخطأ.