تحمل استضافة API مسؤولية التأكد من أنها تعمل. لا توجد طريقة أفضل أو أسهل للقيام بذلك من الاختبار الآلي باستخدام أداة مثل Mocha.

يستفيد تطوير البرامج الحديثة من واجهات برمجة التطبيقات (API) بشكل كبير. إنها بمثابة رابط حاسم بين التطبيقات من جانب العميل وتطبيقات الواجهة الخلفية ، وكذلك بين التطبيقات الداخلية أو الخارجية المختلفة.

تسمح واجهات برمجة التطبيقات بالاتصال السلس وتبادل البيانات ، مما يسمح لمكونات البرامج بالتفاعل مع بعضها البعض بسلاسة. يعد ضمان موثوقية ووظائف وأداء واجهات برمجة التطبيقات هذه أمرًا في غاية الأهمية لتقديم تجربة مستخدم سلسة والحفاظ على تكامل النظام بشكل عام.

لذلك من المهم إجراء اختبار شامل لواجهات برمجة التطبيقات الخاصة بك لتحديد الأخطاء وتصحيحها أثناء التطوير لمنع فشل النظام المحتمل في بيئات الإنتاج.

اختبار واجهات برمجة تطبيقات Node.js باستخدام Mocha و Chai و Chai-HTTP

موكا هو إطار اختبار يستخدم على نطاق واسع ومتوافق مع مختلف أطر عمل جافا سكريبت. تتمثل إحدى ميزاته الرئيسية في عداء اختبار مرن يبسط عملية إدارة حالات الاختبار وتنفيذها بشكل فعال.

كما أنه يدعم أنماط الاختبار المختلفة ، بما في ذلك الاختبار المتزامن وغير المتزامن ، مما يسمح بمجموعة واسعة من سيناريوهات الاختبار.

instagram viewer

على الجانب الآخر، تشاي و تشاي- HTTP هي مكتبات تأكيد يمكنك استخدامها مع Mocha. يوفر Chai نطاقًا واسعًا من واجهات التأكيد التعبيرية والقابلة للقراءة مثل ما يجب ، وتوقع ، وتأكيد. بينما يوفر Chai-HTTP ، وهو امتداد لـ Chai ، واجهة مصممة خصيصًا لاختبار طلبات HTTP وتأكيد استجاباتها.

باستخدام Mocha جنبًا إلى جنب مع Chai و Chai-HTTP ، يمكنك اختبار واجهات برمجة التطبيقات بفعالية. يتضمن سير عمل الاختبار ما يلي:

  • إجراء طلبات HTTP لنقاط نهاية API المحددة.
  • تحديد الاستجابات المتوقعة.
  • التحقق من صحة البيانات المستلمة من المصدر المحدد ، وأكواد حالة HTTP والمزيد.

يمكنك أيضًا محاكاة سيناريوهات اختبار خطأ واجهة برمجة التطبيقات التي قد تنشأ في مثل هذه المواقف والإجراءات التي يجب تشغيلها في حالة حدوثها.

يمكنك العثور على رمز هذا المشروع في ملف مستودع جيثب.

قم بإعداد مشروع Express.js وقاعدة بيانات MongoDB

للبدء، إنشاء خادم ويب سريع، وتثبيت هذه الحزم:

npm تثبيت cors dotenv mongoose mongodb

التالي، إنشاء قاعدة بيانات MongoDB أو تكوين كتلة MongoDB على السحابة. ثم انسخ عنوان URL لاتصال قاعدة البيانات ، وأنشئ ملف .env ملف في الدليل الجذر ، ولصقه في سلسلة اتصال قاعدة البيانات:

CONNECTION_STRING = "سلسلة الاتصال"

لإنهاء عملية الإعداد ، تحتاج إلى تكوين اتصال قاعدة البيانات وتحديد نماذج البيانات لبيانات المستخدم الخاصة بك. ارجع إلى الكود الموجود في مستودع GitHub لهذا المشروع من أجل:

  • قم بتكوين اتصال قاعدة البيانات ، بتنسيق utils / db.js.
  • حدد مخطط بيانات المستخدم بتنسيق النماذج / user.model.js.

حدد وظائف المعالج لمسارات API

ستدير وظائف وحدة التحكم إضافة واسترجاع بيانات المستخدم في قاعدة البيانات. لضمان وظيفة وظائف المعالج هذه ، ستختبر ما إذا كان بإمكانهم نشر البيانات وجلبها بنجاح من قاعدة البيانات.

في الدليل الجذر ، قم بإنشاء ملف وحدات تحكم / userControllers.js ملف وإضافة الكود التالي:

مقدار ثابت المستخدم = يتطلب("../models/user.model");

export.registerUser = غير متزامن (مطلوب ، الدقة) => {
مقدار ثابت {اسم المستخدم ، كلمة المرور} = req.body ؛

يحاول {
انتظر User.create ({اسم المستخدم ، كلمة المرور}) ؛
res.status (201).يرسل({ رسالة: "تم تسجيل المستخدم بنجاح" });
} يمسك (خطأ) {
وحدة التحكم.log (خطأ) ؛
res.status (500).يرسل({ رسالة: 'حدث خطأ!! ' });
}
};

الصادرات.getUsers = غير متزامن (مطلوب ، الدقة) => {
يحاول {
مقدار ثابت المستخدمون = انتظر User.find ({}) ،
res.json (المستخدمون) ؛
} يمسك (خطأ) {
وحدة التحكم.log (خطأ) ؛
res.status (500).يرسل({ رسالة: 'حدث خطأ!!' });
}
};

تحديد مسارات API

إنشاء ملف المسارات / userRoutes.js ملف في الدليل الجذر وإضافة التعليمات البرمجية التالية.

مقدار ثابت صريح = يتطلب('يعبر');
مقدار ثابت جهاز التوجيه = صريح. جهاز التوجيه () ؛
مقدار ثابت userControllers = يتطلب("../controllers/userControllers");

router.post ("/ api / تسجيل"، userControllers.registerUser) ؛
router.get ("/ api / المستخدمين"، userControllers.getUsers) ؛
وحدة.exports = جهاز التوجيه ؛

حدد نقطة دخول الخادم الخاص بك

تحديث الخاص بك server.js ملف مع الكود التالي.

مقدار ثابت صريح = يتطلب('يعبر');
مقدار ثابت كور = يتطلب("كورس");
مقدار ثابت التطبيق = صريح () ؛
مقدار ثابت المنفذ = 5000;
يتطلب("dotenv") .config () ؛
مقدار ثابت connectDB = يتطلب("./utils/db");

connectDB () ،

app.use (express.json ()) ؛
app.use (express.urlencoded ({ ممتد: حقيقي }));
app.use (cors ()) ؛

مقدار ثابت userRoutes = يتطلب("./routes/userRoutes");
app.use ('/'، userRoutes) ؛

app.listen (المنفذ ، () => {
وحدة التحكم.سجل("الخادم يستمع عند http://localhost:$ {منفذ}`);
});

وحدة.exports = التطبيق ؛

اكتب ونفذ حالات الاختبار باستخدام Mocha

مع وجود واجهة برمجة تطبيقات المستخدم في مكانها ، امض قدمًا وقم بتهيئة بيئة الاختبار. أولاً ، قم بتثبيت هذه الحزم على أنها تبعيات للمطورين.

npm تثبيت mocha chai chai-http - حفظ-ديف

الآن ، أضف البرنامج النصي التالي إلى ملف package.json الخاص بك.

"نصوص": {
"امتحان": "موكا - مهلة 10000"
},

سينفذ هذا الأمر حالات الاختبار - تسمح لك إضافة خاصية المهلة بقيمة مناسبة بالتحكم في الحد الأقصى للوقت المسموح به لتنفيذ حالات الاختبار الفردية.

يمكن أن يكون هذا مفيدًا لمنع إجراء الاختبارات إلى أجل غير مسمى أو إكمالها بسرعة كبيرة قبل انتهاء حالات الاختبار.

اختبر نقاط نهاية API

في الدليل الجذر ، قم بإنشاء مجلد جديد وقم بتسميته امتحان. داخل هذا المجلد ، قم بإنشاء ملف user.tests.js ملف وإضافة الكود التالي لحالة اختبار نقطة نهاية POST.

مقدار ثابت تشاي = يتطلب("تشاي");
مقدار ثابت chaiHttp = يتطلب("تشاي- http");
مقدار ثابت التطبيق = يتطلب('../الخادم');

chai.use (chaiHttp) ؛
مقدار ثابت توقع = chai.expect ؛

يصف("واجهة برمجة تطبيقات المستخدم", () => {
يصف("POST / api / Register", () => {
هو - هي("يجب التعامل مع تسجيل المستخدم"، (تم) => {
طلب chai.request (التطبيق)
.بريد("/ api / تسجيل")
.يرسل({ اسم المستخدم: "testUser", كلمة المرور: "testpassword" })
.نهاية((يخطئ الدقة) => {
لو (يخطئ) {
توقع (الدقة). to.have.status (500);
نتوقع (مثل الجسم) .إلى ممتلكات ('رسالة') .that.is.equal ('حدث خطأ!!');
} آخر {
توقع (الدقة). to.have.status (201);
نتوقع (مثل الجسم) .إلى ممتلكات ('رسالة').متساوي("تم تسجيل المستخدم بنجاح");
}

منتهي()؛
});
});
});
});

يحدد هذا الرمز حالة اختبار باستخدام Chai و Chai HTTP لاختبار وظيفة تسجيل المستخدم لواجهة برمجة تطبيقات المستخدم.

يرسل طلب POST إلى نقطة النهاية المحددة ويقوم بتأكيدات حول استجابة API المتوقعة ، والتحقق مما إذا كانت وظيفة تسجيل المستخدم ناجحة أو إذا حدث خطأ.

فيما يلي تفصيل للمكونات الرئيسية لحالة الاختبار:

  • يتوقع -يتيح لك هذا الكائن استخدام طرق تأكيد Chai لعمل تأكيدات حول الاستجابة المتوقعة من واجهة برمجة التطبيقات.
  • يصف - يصف حالات الاختبار ذات الصلة معًا ، في هذه الحالة ، الاختبارات المتعلقة بـ واجهة برمجة تطبيقات المستخدم. تصف الكتلة المتداخلة مجموعات أخرى مرتبطة بحالات الاختبار معًا ، في هذه الحالة ، ملف البريد / api / التسجيل. يساعد هذا في تنظيم حالات الاختبار المتعلقة بشكل خاص بوظيفة معينة.
  • هو - هي - تصف هذه الوظيفة السلوك المتوقع لنقطة نهاية API.
  • نهاية - ترسل هذه الوظيفة الطلب وتوفر وظيفة رد الاتصال للتعامل مع الاستجابة. تقوم وظيفة رد الاتصال بتنفيذ التأكيدات باستخدام امتداد يتوقع وظيفة للتحقق من الاستجابة الواردة من API.
  • منتهي - تعمل هذه الوظيفة لتحديد نهاية حالة الاختبار.

أخيرًا ، أضف الكود الخاص بحالة اختبار GET endpoint مباشرة بعد حالة اختبار نقطة النهاية POST.

يصف("الحصول على / api / المستخدمين", () => {
هو - هي("يجب إحضار كافة بيانات المستخدم"، (تم) => {
طلب chai.request (التطبيق)
.يحصل("/ api / المستخدمين")
.نهاية((يخطئ الدقة) => {
لو (يخطئ) {
توقع (الدقة). to.have.status (500);
نتوقع (مثل الجسم) .إلى ممتلكات ('رسالة') .that.is.equal ("حدث خطأ أثناء إحضار بيانات المستخدم");
} آخر {
توقع (الدقة). to.have.status (200);
نتوقع (res.body) .to.be.an ('مجموعة مصفوفة');
}

منتهي()؛
});
});
});

انطلق وقم بتشغيل البرنامج النصي التجريبي على جهازك الطرفي لتنفيذ حالتين الاختبار.

اختبار npm

إذا لم يواجه تنفيذ حالات الاختبار أي أخطاء ، فمن المفترض أن ترى مخرجات مماثلة تشير إلى اجتياز الاختبارات بنجاح.

يمكن أن تحدث حالات فشل الاختبار لأسباب مختلفة ، مثل مشكلات اتصال الشبكة أثناء طلبات HTTP إلى قاعدة البيانات ، وفقدان البيانات المطلوبة ، والأخطاء المنطقية ، وغيرها من المشكلات.

يقوم Mocha بعمل جيد في تحديد هذه الأخطاء وتسليط الضوء عليها ، وتقديم تقارير اختبار واضحة ومفصلة في السجلات المعروضة في نافذة المحطة الطرفية. يتيح لك ذلك تحديد المشكلات المحددة التي تسببت في فشل الاختبار وتشخيصها بسهولة.

موكا لا يعطيك أي عذر لعدم اختبار واجهات برمجة التطبيقات الخاصة بك

أثناء اختبار وظائف واجهات برمجة التطبيقات يدويًا باستخدام أدوات مثل Postman ، يعد اختبارًا صالحًا النهج ، والاستفادة من Mocha وأطر الاختبار الأخرى للاختبار الآلي يأخذها إلى المرحلة التالية مستوى.

باستخدام أدوات الاختبار هذه ، يمكنك أتمتة الاختبارات بسرعة وسهولة لتغطية مجموعة واسعة من السيناريوهات وحالات الحافة. يمكّنك هذا من اكتشاف الأخطاء وحلها بسرعة قبل نشر واجهات برمجة التطبيقات الخاصة بك ، مما يضمن لك شحن برامج عالية الجودة للإنتاج.