اختبار التكامل لـ Swift مع Docker: دليل شامل

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

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

ابدأ الدورة

اختبار التكامل في Swift باستخدام Docker: دليل شامل



اختبار التكامل هو مرحلة أساسية في تطوير تطبيقات Swift عالية الجودة. فهو يتحقق من كيفية تفاعل الوحدات المختلفة والخدمات والتبعيات الخارجية مع بعضها البعض. يعمل Docker على تبسيط هذه العملية من خلال توفير بيئة معزولة يمكن إعادة إنتاجها بسهولة على أي جهاز. في هذه المقالة، سننظر في كيفية إعداد اختبار التكامل لمشروع Swift باستخدام Docker، بما في ذلك أمثلة لنظامي iOS و macOS.



لماذا استخدام Docker لاختبار التكامل في Swift؟



غالباً ما يعاني الاختبار التقليدي لتطبيقات Swift من مشاكل تتعلق بالبيئة: إصدارات مختلفة من قواعد البيانات والخوادم والمكتبات. يحل Docker هذه المشاكل:



  • العزل: يتم تشغيل كل اختبار في حاوية نظيفة، مما يلغي تأثير العمليات الأخرى.
  • قابلية إعادة الإنتاج: بيئة متطابقة محلياً، على خادم CI، وعند المطورين الآخرين.
  • النشر السريع: يتم تشغيل الحاويات في ثوانٍ، وليس دقائق.
  • قابلية التوسع: سهولة تشغيل اختبارات متوازية بإصدارات مختلفة من التبعيات.


Docker مفيد بشكل خاص لاختبار التفاعلات الشبكية، وقواعد البيانات (مثل PostgreSQL أو Redis)، وهندسة الخدمات المصغرة.



إعداد بيئة Docker لـ Swift



للبدء، سنقوم بإنشاء مشروع Swift بسيط وإعداد Docker. لنفترض أن لدينا تطبيقاً يعمل مع قاعدة بيانات PostgreSQL.



1. إنشاء مشروع Swift



أنشئ مشروعاً جديداً باستخدام Swift Package Manager:



mkdir SwiftIntegrationTestcd SwiftIntegrationTestswift package init --type executable


سنضيف تبعية للعمل مع PostgreSQL. افتح Package.swift وأضف:



// swift-tools-version:5.9import PackageDescription

let package = Package( name: "SwiftIntegrationTest", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .executableTarget( name: "SwiftIntegrationTest", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]), .testTarget( name: "SwiftIntegrationTestTests", dependencies: ["SwiftIntegrationTest"]) ])


2. Dockerfile لـ Swift



أنشئ ملف Dockerfile في جذر المشروع:



FROM swift:5.9-focal

WORKDIR /app

# نسخ ملفات المشروعCOPY Package.swift .COPY Sources/ ./Sources/COPY Tests/ ./Tests/

# بناء المشروع (بدون اختبارات لتسريع العملية)RUN swift build -c release

# أمر تشغيل الاختباراتCMD ["swift", "test", "--enable-test-discovery"]


3. Docker Compose للتبعيات



أنشئ docker-compose.yml لتشغيل الاختبارات مع PostgreSQL:



version: '3.8'

services: postgres: image: postgres:16 environment: POSTGRES_DB: testdb POSTGRES_USER: testuser POSTGRES_PASSWORD: testpass ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U testuser -d testdb"] interval: 5s timeout: 5s retries: 5

swift-tests: build: . depends_on: postgres: condition: service_healthy environment: DATABASE_HOST: postgres DATABASE_PORT: 5432 DATABASE_NAME: testdb DATABASE_USER: testuser DATABASE_PASSWORD: testpass


كتابة اختبارات التكامل في Swift



الآن سنكتب اختباراً يتحقق من الاتصال بقاعدة البيانات وتنفيذ الاستعلام.



1. فئة للعمل مع قاعدة البيانات



أنشئ ملف Sources/SwiftIntegrationTest/DatabaseService.swift:




                
                

المدونات

توصيات الكتب