تكليفات الدروس من [ 16 ] إلى [ 20 ]
[ 4 ] تكليفات على [ Coverage & Mock Functions ]
التكليف 01
مطابقة القيم والأنواع وعناصر ال Array
- لديك البيانات التالية وممنوع تعديلها
- تأكد أن username نص باستخدام expect.any
- تأكد أن age رقم باستخدام expect.any
- تأكد أن isActive قيمة Boolean باستخدام expect.any
- باستخدام expect.anything تأكد أن score ليست null أو undefined
- تأكد أن skills تحتوي على "CSS" و"HTML" باستخدام expect.arrayContaining وبترتيب مختلف عن ترتيبهم في البيانات
- تأكد أن phone لا تطابق expect.anything
profile.js
const profile = {
username: "Osama",
age: 39,
isActive: true,
score: 0,
skills: ["HTML", "CSS", "JavaScript", "Jest"],
phone: null,
};
module.exports = profile;
التكليف 02
تغطية جميع حالات الدالة
- لديك الدالة التالية وممنوع تعديلها
- قم بكتابة اختبارات تغطي عدم تمرير السعر والسعر الأقل من 100 والسعر الأكبر من أو يساوي 100
- اختبر القيمة 100 نفسها للتأكد من الحد الفاصل
- فعل جمع ال Coverage داخل package.json
- اجعل التقرير بصيغة HTML
- شغل الاختبارات وافتح التقرير وتأكد من تغطية الدالة بالكامل
shipping.js
function getShipping(price = 0) {
if (price >= 100) {
return 0;
}
return 20;
}
module.exports = getShipping;
التكليف 03
إنشاء Mock Function وفحص استدعاءاتها
- قم بإنشاء Mock Function باستخدام jest.fn بإسم sendMessage
- تستقبل إسم الشخص ونص الرسالة
- ترجع نصا بالشكل "To Osama: Welcome"
- استدع الدالة 3 مرات بالبيانات الموضحة
- تأكد من نتيجة كل استدعاء
- تأكد أن الدالة تم استدعاؤها
- تأكد أن عدد الاستدعاءات 3
- تأكد أنها تم إستدعائها بالقيم "Ahmed" و "Hello"
- تأكد أن آخر استدعاء كان بالقيم "Sayed" و "Good Morning"
// Calls And Expected Results
// sendMessage("Osama", "Welcome")
// "To Osama: Welcome"
// sendMessage("Ahmed", "Hello")
// "To Ahmed: Hello"
// sendMessage("Sayed", "Good Morning")
// "To Sayed: Good Morning"
التكليف 04
إعداد خيارات Jest وال Coverage
- قم بتعديل الإعدادات التالية داخل package.json
- اجعل أمر test يقوم بتشغيل Jest مع مراقبة جميع ملفات الاختبارات
- قم بتفعيل جميع ال Coverage
- اجعل التقرير بصيغة HTML
- اجعل مجلد التقارير بإسم test-reports
- اجمع التغطية من ملفات js و jsx داخل مجلد src فقط
- استبعد مجلد build من التغطية وكذلك node_modules
{
"scripts": {
"test": "jest"
},
"jest": {}
}