Swift Academy · पाठ

async कोड का परीक्षण (XCTest)

XCTest के साथ async परीक्षण लिखिए: परीक्षणों को async चिह्नित कीजिए, await और throws का उपयोग कीजिए, विफलताओं व समय-सीमाओं का परीक्षण कीजिए और संरचित समवर्तीता के परिणामों की जाँच कीजिए।

पाठ 3, कुल 3 में से8 चरण

async कोड का परीक्षण (XCTest), CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

असिंक्रोनस परीक्षण: मूल बातें

XCTest async परीक्षणों का समर्थन करता है। परीक्षणों को छोटा और नियतात्मक रखें:

  • async परीक्षण घोषित करें और await का उपयोग करें
  • विफलताओं के लिए throws और do/catch का उपयोग करें
  • sleep की जगह छोटे नकली ऑब्जेक्ट/स्टब का उपयोग करें

असिंक्रोनस सफलता का मामला

परीक्षण को async चिह्नित करें और SUT को await के साथ कॉल करें। XCTAssertEqual जैसे सामान्य अभिकथन लिखें।

import XCTest
import Foundation

// System Under Test (SUT)
func fetchValue() async -> Int {
    try? await Task.sleep(nanoseconds: 50_000_000)
    return 42
}

final class AsyncBasicsTests: XCTestCase {
    func testFetchValue_returns42() async {
        let v = await fetchValue()
        XCTAssertEqual(v, 42)
    }
}

असिंक्रोनस throws और अभिकथन

async throws परीक्षणों का उपयोग करें। विशिष्ट त्रुटियों के लिए उन्हें पकड़ें और आशय को स्पष्ट रखने के लिए पैटर्न-मिलान करें।

import XCTest

enum NetError: Error { case offline }

func loadNumber(online: Bool) async throws -> Int {
    try await Task.sleep(nanoseconds: 30_000_000)
    if !online { throw NetError.offline }
    return 7
}

final class AsyncThrowingTests: XCTestCase {
    func testLoadNumber_success() async throws {
        let n = try await loadNumber(online: true)
        XCTAssertEqual(n, 7)
    }

    func testLoadNumber_offline_throws() async {
        do {
            _ = try await loadNumber(online: false)
            XCTFail("Expected error")
        } catch NetError.offline {
            // expected
        } catch {
            XCTFail("Unexpected error: \\(error)")
        }
    }
}

समानांतर परिणाम

संरचित समवर्तीता का परीक्षण करना आसान है: async let का उपयोग करें और अंतिम परिणाम का अभिकथन करें। अस्थिर परीक्षणों से बचने के लिए विलंब बहुत छोटे रखें।

import XCTest

func compute(_ x: Int) async -> Int {
    try? await Task.sleep(nanoseconds: 10_000_000)
    return x * x
}

final class ParallelTests: XCTestCase {
    func testParallel_asyncLet_sumsSquares() async {
        async let a = compute(2)
        async let b = compute(3)
        let sum = await (a + b)
        XCTAssertEqual(sum, 13) // 4 + 9
    }
}

समय-सीमा का परीक्षण

ऑपरेशन को छोटी sleep के विरुद्ध दौड़ाकर समय-सीमाओं का परीक्षण करें। परीक्षणों को तेज़ और स्थिर रखने के लिए बहुत कम अवधि का उपयोग करें।

import XCTest

enum TimeoutError: Error { case timedOut }

func withTimeout<T>(
    seconds: Double,
    operation: @escaping () async throws -> T
) async throws -> T {
    try await withThrowingTaskGroup(of: T.self) { group in
        group.addTask { try await operation() }
        group.addTask {
            try await Task.sleep(nanoseconds: UInt64(seconds * 1_000_000_000))
            throw TimeoutError.timedOut
        }
        let first = try await group.next()!
        group.cancelAll()
        return first
    }
}

final class TimeoutTests: XCTestCase {
    func testTimeout_timesOutFast() async {
        do {
            _ = try await withTimeout(seconds: 0.01) {
                try await Task.sleep(nanoseconds: 50_000_000) // slower than timeout
                return "OK"
            }
            XCTFail("Expected timeout")
        } catch TimeoutError.timedOut {
            // expected
        } catch {
            XCTFail("Unexpected error: \\(error)")
        }
    }
}

अपेक्षाएँ (पुरानी शैली)

पुराने कॉलबैक के लिए अभी भी अपेक्षा/प्रतीक्षा का उपयोग करें। नए कोड के लिए असिंक्रोनस परीक्षणों को प्राथमिकता दें।

import XCTest

// Legacy API with a completion handler
func legacyFetch(_ completion: @escaping (String) -> Void) {
    Task { try? await Task.sleep(nanoseconds: 20_000_000); completion("done") }
}

final class ExpectationTests: XCTestCase {
    func testLegacy_withExpectation() {
        let exp = expectation(description: "legacy finishes")
        legacyFetch { value in
            XCTAssertEqual(value, "done")
            exp.fulfill()
        }
        wait(for: [exp], timeout: 1.0)
    }
}

आधुनिक असिंक्रोनस परीक्षण शैली

त्वरित जाँच: किसी असिंक्रोनस फ़ंक्शन का परीक्षण करने की सर्वोत्तम पद्धति क्या है?

पुनरावलोकन

पुनरावलोकन: await के साथ async XCTest विधियों का उपयोग करें, सफलता और विफलता दोनों मार्गों का अभिकथन करें, विलंब बहुत छोटे रखें और अपेक्षाओं को पुराने कॉलबैक के लिए सुरक्षित रखें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “async कोड का परीक्षण (XCTest)” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “async कोड का परीक्षण (XCTest)” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“async कोड का परीक्षण (XCTest)” में मैं क्या सीखूँगा?

XCTest के साथ async परीक्षण लिखिए: परीक्षणों को async चिह्नित कीजिए, await और throws का उपयोग कीजिए, विफलताओं व समय-सीमाओं का परीक्षण कीजिए और संरचित समवर्तीता के परिणामों की जाँच कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।

“async कोड का परीक्षण (XCTest)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. उत्पादक/उपभोक्ता, पाइपलाइन और समय-सीमाएँ
  2. पुराने कॉलबैक/Combine को async/await से जोड़ना
  3. async कोड का परीक्षण (XCTest)
← Swift Academy पर वापस जाएँ