اليوم أريد أن أخبرك بسرعة عن كيفية اختبار التعليمات البرمجية غير المتزامنة.
تخيل الموقف الذي تحتاجه لتنزيل البيانات من الإنترنت وتحقق ما إذا كان كل شيء يعمل بشكل جيد ، أو بعض المهام الأخرى التي تعمل بشكل غير متزامن. وكيفية اختباره؟ ماذا لو حاولت نفس الكود المتزامن العادي؟!
func testAscynFunction() { someAsyncFunction() } func someAsyncFunction() { let bg = DispatchQueue.global(qos: .background) bg.asyncAfter(deadline: .now() + 5) { XCTAssert(false, "Something went wrong") } }
سيعود هذا الاختبار بنا بنتيجة إيجابية ، لأن الطريقة لن تنتظر جميع مهامنا غير المتزامنة.
لحل هذه المشكلة في الاختبارات ، هناك شيء واحد رائع:
XCTestExpectation
يحدد XCTestExpectation عدد مرات تنفيذ الطريقة غير المتزامنة وفقط بعد كل عمليات الإعدام هذه ، سينتهي الاختبار ويعرف ما إذا كانت هناك أية أخطاء. هنا مثال:
class TestAsyncTests: XCTestCase {
آمل أن يكون هذا المنشور مفيدًا لشخص ما.