عائلة XCTAssert والتأكيدات التي تطلق الأخطاء
استخدموا XCTAssertEqual وXCTAssertThrowsError وXCTUnwrap بأمان.
عائلة XCTAssert والتأكيدات التي تطلق الأخطاء درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
XCTAssert وXCTAssertTrue
يفشل XCTAssert وXCTAssertTrue إذا كان الشرط خاطئًا.
XCTAssert(user.isLoggedIn)
XCTAssertTrue(cart.isEmpty, "Cart should be empty after clear()")XCTAssertFalse
يفشل XCTAssertFalse إذا كان الشرط صحيحًا.
XCTAssertFalse(session.isExpired, "Fresh session should not be expired")XCTAssertEqual
يفشل XCTAssertEqual إذا لم تكن القيمتان متساويتين. يجب أن تكون كلتا القيمتين من النوع Equatable.
XCTAssertEqual(calculator.add(2, 3), 5)
XCTAssertEqual(user.name, "Alice", "Name should match the fixture")XCTAssertNotEqual
يفشل XCTAssertNotEqual إذا كانت القيمتان متساويتين.
XCTAssertNotEqual(originalHash, updatedHash)XCTAssertNil وXCTAssertNotNil
اختبر القيم الاختيارية: يفشل الاختبار إذا لم تكن القيمة nil أو إذا كانت nil، على التوالي.
XCTAssertNil(service.error, "No error expected after successful fetch")
XCTAssertNotNil(result, "Result should be non-nil on success")XCTAssertThrowsError
يفشل الاختبار إذا لم يُلقِ التعبير خطأً. ويمكنك اختياريًا فحص الخطأ المُلقى.
XCTAssertThrowsError(try parser.parse("invalid json")) { error in
XCTAssertEqual(error as? ParseError, .invalidInput)
}XCTAssertNoThrow
يفشل الاختبار إذا ألقى التعبير خطأً.
XCTAssertNoThrow(try parser.parse(validJSON))XCTUnwrap
يفك XCTUnwrap قيمة Optional ويفشل الاختبار إذا كانت nil، وهو أوضح من استخدام guard let مع XCTFail.
let user = try XCTUnwrap(service.currentUser)
XCTAssertEqual(user.name, "Bob")XCTAssertEqual مع الدقة
عند مقارنة الأعداد ذات الفاصلة العائمة، حدّد قيمة للدقة لمراعاة فروق التقريب.
XCTAssertEqual(result, 3.14159, accuracy: 0.0001)رسائل فشل مخصصة
تقبل جميع دوال XCTAssert معامل رسالة اختياريًا لإظهار مخرجات فشل أوضح.
XCTAssertEqual(items.count, 3, "Expected 3 items after insert, got \(items.count)")XCTExpectFailure
علّم الإخفاقات المتوقعة حتى تُبلّغ على أنها نجاحات في CI، وهذا مفيد للأخطاء المعروفة التي لم تُصلح بعد.
XCTExpectFailure("Known issue: rdar://12345") {
XCTAssertEqual(brokenFunction(), expectedValue)
}تحقق سريع
ما دالة XCTest التي تفك قيمة Optional بأمان وتفشل الاختبار إذا كانت nil؟
مراجعة الدرس
تشمل عائلة تأكيدات XCTest: XCTAssert/True/False وXCTAssertEqual/NotEqual وXCTAssertNil/NotNil وXCTAssertThrowsError/NoThrow وXCTUnwrap. أضف دائمًا رسائل وصفية. استخدم XCTExpectFailure لتتبع الإخفاقات المعروفة.
الأسئلة الشائعة
هل درس «عائلة XCTAssert والتأكيدات التي تطلق الأخطاء» مجاني؟
نعم — نص درس «عائلة XCTAssert والتأكيدات التي تطلق الأخطاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «عائلة XCTAssert والتأكيدات التي تطلق الأخطاء»؟
استخدموا XCTAssertEqual وXCTAssertThrowsError وXCTUnwrap بأمان. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «عائلة XCTAssert والتأكيدات التي تطلق الأخطاء»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إعداد XCTestCase والتنظيف وطرائق الاختبار
- عائلة XCTAssert والتأكيدات التي تطلق الأخطاء
- المحاكاة المعتمدة على البروتوكولات وحقن التبعيات
- الاختبارات غير المتزامنة وقياس الأداء