Theme
Primary Color

تكليفات الدروس من [ 1 ] إلى [ 10 ]

[ 8 ] تكليفات على [ Global Methods ]

التكليف 01

 إعداد أمر تشغيل الاختبارات

  • لديك الجزء التالي من ملف package.json
  • قم بتعديل أمر test ليقوم بتشغيل Jest
  • قم بكتابة الأمر المستخدم لتشغيل الاختبارات من ال Terminal
  • اعتبر أن Jest مثبتة بالفعل داخل المشروع
{
  "scripts": {
    "test": ""
  }
}

التكليف 02

كتابة أول Test

  • قم بإنشاء ملف بإسم welcome.js
  • قم بإنشاء Function بإسم welcome تقوم بإرجاع النص "Welcome To Testing"
  • قم بتصدير الدالة باستخدام module.exports
  • قم بإنشاء ملف بإسم welcome.test.js داخل مجلد tests
  • قم بكتابة Test يتأكد من النص الذي تقوم بإرجاعه الدالة باستخدام toBe
  • للتدريب على TDD ابدأ بدالة فارغة واكتب الاختبار وشاهد فشله ثم أكمل الدالة ليعمل بنجاح
// welcome.js
function welcome() {
  // Write Your Code Here
}

module.exports = welcome;
// tests/welcome.test.js

// Import The Function And Write Your Test Here

التكليف 03

 اختبار أكثر من حالة

  • قم بإنشاء Function بإسم getTotal تقبل سعر المنتج وعدد القطع
  • لو لم يتم تمرير بيانات تقوم بإرجاع 0
  • لو تم تمرير السعر فقط يكون عدد القطع الافتراضي 1
  • لو تم تمرير السعر والعدد تقوم بإرجاع حاصل ضربهما
  • لو عدد القطع 0 تقوم بإرجاع 0
  • قم بكتابة اختبار مستقل لكل حالة
  • استخدم it بدلا من test في أحد الاختبارات
// get-total.js

// Write Function Code Here

// Expected Results
// getTotal() => 0
// getTotal(50) => 50
// getTotal(50, 3) => 150
// getTotal(50, 0) => 0

التكليف 04

اختبار عدد غير محدد من القيم

  • قم بإنشاء Function بإسم joinWords تستقبل أي عدد من الكلمات
  • الدالة تقوم بإرجاع الكلمات وبين كل كلمة والتالية مسافة واحدة
  • لو لم يتم تمرير كلمات تقوم بإرجاع نصا فارغا
  • قم بكتابة اختبار مستقل لكل حالة من الحالات التالية
// join-words.js

// Write Function Code Here

// Expected Results
// joinWords() => ""
// joinWords("Hello") => "Hello"
// joinWords("Hello", "Jest") => "Hello Jest"
// joinWords("I", "Love", "Unit", "Testing") => "I Love Unit Testing"

التكليف 05

تنظيم الاختبارات باستخدام Describe

  • لديك الدالة التالية التي تقبل رقما وتقوم بإرجاع نوعه
  • ممنوع تعديل الدالة
  • قم بإنشاء مجموعة اختبارات رئيسية بإسم "Check Number Type"
  • داخلها مجموعة بإسم "Positive And Negative Numbers" لاختبار الرقم الموجب والسالب
  • داخلها مجموعة أخرى بإسم "Zero And Default Value" لاختبار الصفر وعدم تمرير قيمة
  • استخدم toBe في جميع الاختبارات
// number-type.js

function numberType(number = 0) {
  if (number > 0) {
    return "Positive";
  }

  if (number < 0) {
    return "Negative";
  }

  return "Zero";
}

module.exports = numberType;

التكليف 06

كتابة الدالة من الاختبارات وتوثيقها

  • لديك الاختبارات التالية وممنوع تعديلها
  • قم بإنشاء Function بإسم formatUsername تجعل جميع الاختبارات تنجح
  • لو لم يتم تمرير إسم تقوم بإرجاع "Unknown"
  • لو تم تمرير إسم احذف المسافات من بدايته ونهايته
  • احذف علامة @ من البداية لو موجودة والمطلوب حذف علامة واحدة فقط
  • بعد التنظيف احتفظ بأول 8 أحرف فقط
  • قم بكتابة تعليق أعلى الدالة يشرح سلوكها بالإنجليزي وكل نقطة في سطر منفصل
  • راعي ترتيب الخطوات حتى ينجح الاختبار الأخير
// tests/format-username.test.js

const formatUsername = require("../format-username");

describe("Format The Username", () => {
  test("Return Unknown If No Username Is Passed", () => {
    expect(formatUsername()).toBe("Unknown");
  });

  test("Remove Spaces From Both Ends", () => {
    expect(formatUsername(" Osama ")).toBe("Osama");
  });

  test("Remove The Leading At Sign", () => {
    expect(formatUsername("@Ahmed")).toBe("Ahmed");
  });

  test("Keep Only The First Eight Characters", () => {
    expect(formatUsername("JavaScript")).toBe("JavaScri");
  });

  test("Keep A Valid Username Unchanged", () => {
    expect(formatUsername("Sayed")).toBe("Sayed");
  });

  test("Clean The Username Before Limiting Its Length", () => {
    expect(formatUsername(" @JavaScript ")).toBe("JavaScri");
  });
});

التكليف 07

 استخدام Only و Skip

  • لديك الدالة وملف الاختبارات التاليان
  • ممنوع تعديل الدالة أو محتوى الاختبارات
  • في المرحلة الأولى قم بتشغيل اختبار الرقم الموجب فقط باستخدام only
  • في المرحلة الثانية قم بتشغيل جميع الاختبارات ما عدا اختبار الرقم السالب باستخدام skip
  • كل مرحلة مستقلة عن الأخرى
double.js
function double(number = 0) {
  return number * 2;
}

module.exports = double;
tests/double.test.js
const double = require("../double");

test("Double A Positive Number", () => {
  expect(double(5)).toBe(10);
});

test("Double A Negative Number", () => {
  expect(double(-5)).toBe(-10);
});

test("Return Zero If No Number Is Passed", () => {
  expect(double()).toBe(0);
});

التكليف 08

التجهيز والتنظيف باستخدام Hooks

  • لديك متغير numbers يبدأ ب Array فارغة
  • استخدم beforeAll لوضع القيم [10, 20, 30] قبل تشغيل الاختبارات
  • اكتب اختبارا يتأكد أن عدد العناصر 3
  • اكتب اختبارا يتأكد أن مجموع الأرقام 60
  • استخدم afterAll لإفراغ ال Array بعد انتهاء جميع الاختبارات
  • ضع ال Hooks والاختبارات داخل describe
  • ممنوع الاعتماد على اختبار لتجهيز بيانات الاختبار التالي

// tests/numbers.test.js

let numbers = [];

// Write Your Code Here

حلول التكليفات

Premium

حلول التكليفات متاحة للأعضاء ال Premium

راجع الحلول وطور مهاراتك مع العضوية المميزة

اكتشف العضوية المميزة