Quick/Nimble لـ Swift: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Quick/Nimble ولماذا تحتاجهما؟

Quick و Nimble هما مكتبتان متكاملتان للغة Swift، مصممتان لكتابة الاختبارات بأسلوب التطوير القائم على السلوك (BDD). BDD هي منهجية تطوير تركز على سلوك التطبيق من وجهة نظر المستخدم، وليس على التفاصيل التقنية للتنفيذ. بدلاً من العبارات الجافة مثل XCTAssertEqual(a, b)، تصف ما يجب أن يحدث: "عندما يضغط المستخدم على الزر، يجب أن يعرض التطبيق رسالة ترحيب".

Quick هو إطار عمل لوصف سيناريوهات الاختبار. يوفر لغة خاصة بالمجال (DSL) تسمح بتنظيم الاختبارات في هيكل هرمي: describe (وصف السياق)، context (توضيح الشروط)، و it (اختبار محدد). هذا يجعل الاختبارات قابلة للقراءة والفهم حتى لأعضاء الفريق غير التقنيين (المديرين، المحللين).

Nimble هي مكتبة لكتابة المطابقات (assertions). بدلاً من XCTAssert القياسية، تستخدم تراكيب تعبيرية: expect(value).to(equal(expected))، expect(array).to(contain(element)). توفر Nimble عشرات المطابقات المدمجة وتسمح بإنشاء مطابقات مخصصة بسهولة.

لماذا تحتاج هذا؟

  • قابلية القراءة: تبدو اختبارات BDD وكأنها مواصفات. يمكنك عرضها على العميل للتأكد من فهم المتطلبات بشكل صحيح.
  • التنظيم: يساعد الهيكل الهرمي describe/context/it في تنظيم الاختبارات منطقياً، وتجنب "كود السباغيتي".
  • مطابقات تعبيرية: تجعل Nimble التأكيدات أكثر وضوحاً وغنى بالمعلومات. تصبح أخطاء الاختبار مفهومة فوراً.
  • سهولة التصحيح: عند فشل الاختبار، لا ترى فقط "متوقع 5، تم الحصول على 3"، بل السياق الكامل: "عندما يدخل المستخدم كلمة مرور خاطئة، يجب أن يعرض النظام خطأ".

تثبيت Quick/Nimble

يتم تثبيت Quick و Nimble عبر CocoaPods أو Swift Package Manager (SPM). سنستعرض كلا الطريقتين.

التثبيت عبر CocoaPods

إذا كنت لا تستخدم CocoaPods بعد، قم بتثبيته:

sudo gem install cocoapods

في جذر مشروعك، أنشئ ملف Podfile وأضف إليه:

target 'YourAppName' do
  # التبعيات العادية (إن وجدت)
  use_frameworks!

  target 'YourAppNameTests' do
    inherit! :search_paths
    pod 'Quick'
    pod 'Nimble'
  end
end

ثم نفذ:

pod install

بعد ذلك، افتح ملف .xcworkspace.

التثبيت عبر Swift Package Manager (SPM)

في Xcode: File → Add Packages... وأدخل عنوان المستودع:

https://github.com/Quick/Quick.git
https://github.com/Quick/Nimble.git

اختر أحدث إصدار ثابت وأضف الحزم إلى هدف الاختبار الخاص بك (YourAppNameTests).

بداية سريعة: أول اختبار

لننشئ كلاساً بسيطاً Calculator ونختبره.

الكاس المراد اختباره

// Calculator.swift
import Foundation

class Calculator {
    func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }

    func subtract(_ a: Int, _ b: Int) -> Int {
        return a - b
    }

    func multiply(_ a: Int, _ b: Int) -> Int {
        return a * b
    }
}

الاختبار باستخدام Quick و Nimble

// CalculatorSpec.swift
import Quick
import Nimble
@testable import YourAppName // استبدل باسم تطبيقك

class CalculatorSpec: QuickSpec {
    override func spec() {
        describe("Calculator") {
            var calculator: Calculator!

            beforeEach {
                calculator = Calculator(                    

توصيات