تكليفات الدروس من [ 11 ] إلى [ 15 ]
[ 6 ] تكليفات على [ Matchers ]
التكليف 01
اختبار عناصر ال Array
- لديك Array تحتوي على أسماء كورسات وممنوع تعديلها
- تأكد أن عدد العناصر 4 بطريقتين مختلفتين
- تأكد أنها تحتوي على "JavaScript"
- تأكد أنها لا تحتوي على "Python"
- باستخدام Loop تأكد أن كل عنصر ليس نصا فارغا
- ضع جميع الاختبارات داخل describe
courses.js
const courses = ["HTML", "CSS", "JavaScript", "TypeScript"];
module.exports = courses;tests/courses.test.js
const courses = require("../courses");
// Write Your Tests Here
التكليف 02
اختبار الأرقام والحدود
- لديك Array تحتوي على تقييمات وممنوع تعديلها
- باستخدام Loop تأكد أن نوع كل عنصر هو "number"
- تأكد أن كل تقييم أكبر من أو يساوي 1
- تأكد أن كل تقييم أقل من أو يساوي 5
- تأكد أن ال Array لا تحتوي على 0
- اكتب اختبارا مستقلا لكل شرط
ratings.js
const ratings = [1, 4, 3, 5, 2];
module.exports = ratings;
التكليف 03
استخدام Truthy و Falsy
- قم بإنشاء Function بإسم canRegister تستقبل عمر الشخص
- تقوم بإرجاع true إذا كان العمر أكبر من أو يساوي 18
- تقوم بإرجاع false إذا كان العمر أقل من 18 أو لم يتم تمريره
- اختبر العمر 18 باستخدام toBeTruthy
- اختبر العمر 16 باستخدام toBeFalsy
- اختبر عدم تمرير العمر باستخدام not.toBeTruthy
- اختبر العمر 25 باستخدام not.toBeFalsy
// can-register.js
// Write Function Code Here
التكليف 04
اختبار بيانات المستخدم
- لديك Object يحتوي على بيانات مستخدم وممنوع تعديله
- تأكد من وجود الخاصية username
- تأكد أن الخاصية role موجودة وقيمتها "Student"
- تأكد أن قيمة website تبدأ بـ https:// باستخدام toMatch
- تأكد أن bio تحتوي على كلمة "JavaScript" باستخدام toMatch
- تأكد أن قيمة phone هي undefined
- تأكد من عدم وجود الخاصية password
user.js
const user = {
username: "Osama",
role: "Student",
website: "https://elzero.org",
bio: "I Love JavaScript",
phone: undefined,
};
module.exports = user;
التكليف 05
إنشاء Matcher لفحص الأرقام الزوجية
- باستخدام expect.extend قم بإنشاء Matcher بإسم toBeEven
- ال Matcher تنجح إذا كان باقي قسمة الرقم على 2 يساوي صفر
- اعتبر أن القيم المستخدمة أعداد صحيحة
- قم بإرجاع pass و message من ال Matcher
- اجعل رسالة الفشل مناسبة للاستخدام العادي وللاستخدام مع not
- اجعل الاختبارات التالية تعمل بدون تعديلها
tests/even.test.js
// Write Your Matcher Here
// Do Not Edit Here
describe("Check Even Numbers", () => {
test("Ten Is Even", () => {
expect(10).toBeEven();
});
test("Zero Is Even", () => {
expect(0).toBeEven();
});
test("Negative Four Is Even", () => {
expect(-4).toBeEven();
});
test("Seven Is Not Even", () => {
expect(7).not.toBeEven();
});
});
التكليف 06
إنشاء Matcher تقبل حدودا
- قم بإنشاء Matcher بإسم toHaveLengthBetween
- تستقبل نصا وحدا أدنى وحدا أقصى لطوله
- تنجح إذا كان طول النص بين الحدين مع احتساب الحدين
- اعتبر أن القيمة المستقبلة نص والحد الأدنى لا يتجاوز الحد الأقصى
- اجعل رسالة الفشل تحتوي على الطول الفعلي والحدين
- اجعل الرسالة مناسبة أيضا عند استخدام not
- اجعل الاختبارات التالية تعمل بدون تعديلها
tests/length.test.js
// Write Your Matcher Here
// Do Not Edit Here
describe("Check The Text Length", () => {
test("Accept A Length Inside The Range", () => {
expect("Osama").toHaveLengthBetween(3, 8);
});
test("Accept The Minimum Length", () => {
expect("CSS").toHaveLengthBetween(3, 8);
});
test("Accept The Maximum Length", () => {
expect("Frontend").toHaveLengthBetween(3, 8);
});
test("Reject A Length Below The Minimum", () => {
expect("JS").not.toHaveLengthBetween(3, 8);
});
test("Reject A Length Above The Maximum", () => {
expect("JavaScript").not.toHaveLengthBetween(3, 8);
});
});