"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم الكود النظيف: اختبارات الوحدة ⚡

فهم الكود النظيف: اختبارات الوحدة ⚡

تم النشر بتاريخ 2024-08-31
تصفح:130

Understanding Clean Code: Unit Tests ⚡

في تطوير البرمجيات، يعد اختبار الوحدة ممارسة مهمة تساعد على ضمان صحة التعليمات البرمجية الخاصة بك.

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

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


؟ لماذا يهم اختبار الوحدة

يتضمن اختبار الوحدة كتابة اختبارات للوحدات الفردية أو مكونات التعليمات البرمجية الخاصة بك للتحقق من أنها تعمل كما هو متوقع. الأهداف الأساسية لاختبارات الوحدة هي:

1- اكتشف الأخطاء مبكرًا: اكتشف المشكلات أثناء التطوير قبل أن تصل إلى مرحلة الإنتاج.

2- تسهيل إعادة البناء: تأكد من أن التغييرات التي يتم إجراؤها على الكود الخاص بك لا تؤدي إلى تعطيل الوظائف الحالية.

3- سلوك كود المستند: بمثابة توثيق لكيفية استخدام الكود الخاص بك.


؟ مبادئ اختبار الوحدة الفعالة

⚡ اختبار شيء واحد في كل مرة

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

function add(a, b) {
    return a   b;
}

// Test case for the add function
function testAdd() {
    // Test adding positive numbers
    assertEqual(add(2, 3), 5, '2   3 should be 5');
    // Test adding negative numbers
    assertEqual(add(-1, -1), -2, '-1   -1 should be -2');
}

// A simple assertion function
function assertEqual(actual, expected, message) {
    if (actual !== expected) {
        throw new Error(message);
    }
}

⚡ جعل الاختبارات قابلة للقراءة

يجب أن تكون اختباراتك سهلة القراءة والفهم. استخدم أسماء وصفية لوظائف الاختبار الخاصة بك وتأكيدات واضحة. وهذا يساعد الآخرين (ونفسك) على فهم ما يتحقق منه كل اختبار بسرعة.

function isEven(number) {
    return number % 2 === 0;
}

// Descriptive test function
function testIsEven() {
    assertEqual(isEven(4), true, '4 should be even');
    assertEqual(isEven(5), false, '5 should be odd');
}

⚡ استخدم أسماء واضحة ووصفية

يجب أن تصف أسماء حالات الاختبار ما يتم اختباره. وهذا يعزز سهولة القراءة وقابلية الصيانة للاختبارات الخاصة بك.

function calculateTotalPrice(items) {
    return items.reduce((total, item) => total   item.price, 0);
}

// Descriptive test case names
function testCalculateTotalPrice() {
    assertEqual(calculateTotalPrice([{ price: 10 }, { price: 20 }]), 30, 'Total price should be 30 for items costing 10 and 20');
    assertEqual(calculateTotalPrice([{ price: 5 }]), 5, 'Total price should be 5 for a single item costing 5');
}

⚡ حافظ على استقلالية الاختبارات

يجب أن يكون كل اختبار مستقلاً عن الآخرين. يمكن أن تؤدي الاختبارات التي تعتمد على الحالة المشتركة إلى اختبارات غير مستقرة وتجعل تصحيح الأخطاء أمرًا صعبًا.

function multiply(a, b) {
    return a * b;
}

// Independent test cases
function testMultiply() {
    assertEqual(multiply(2, 3), 6, '2 * 3 should be 6');
    assertEqual(multiply(0, 10), 0, '0 * 10 should be 0');
}

⚡ استخدم النماذج والنماذج بشكل مناسب

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

// Example of using a mock for a database call
function getUser(id) {
    // Imagine this function makes a database call
    return database.getUserById(id);
}

function testGetUser() {
    const mockDatabase = {
        getUserById: (id) => ({ id, name: 'John Doe' }),
    };

    const result = getUser(1, mockDatabase);
    assertEqual(result.name, 'John Doe', 'User name should be John Doe');
}

⚡ الاختبار الآلي

قم بأتمتة تشغيل اختبارات الوحدة الخاصة بك للتأكد من تنفيذها بانتظام. يمكن أن تساعد أدوات التكامل المستمر (CI) في تشغيل اختباراتك تلقائيًا عند إجراء تغييرات.

إذا كنت تستخدم إطار عمل اختبار مثل Jest، فيمكنك إعداد برنامج نصي في ملف package.json الخاص بك:

"scripts": {
    "test": "jest"
}

سيؤدي تشغيل اختبار npm إلى تنفيذ جميع اختباراتك وتقديم تعليقات حول حالتها.


خاتمة

تعد كتابة اختبارات الوحدة النظيفة والفعالة أمرًا ضروريًا للحفاظ على كود عالي الجودة.

من خلال اتباع المبادئ الموضحة في الفصل 9 من الكود النظيف، يمكنك التأكد من أن اختباراتك موثوقة ومفهومة وقيمة.

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

برمجة سعيدة!

بيان الافراج تم نشر هذه المقالة على: https://dev.to/alisamir/understanding-clean-code-unit-tests-5d1a?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3