Testare il codice asincrono
Verifichi in modo affidabile i flussi async/await.
Testare il codice asincrono è una lezione SwiftUI Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SwiftUI Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SwiftUI Academy include 4 lezioni in totale.
L'asincronia richiede particolare attenzione
Le chiamate di rete e le attività terminano in un secondo momento, non istantaneamente. I test devono attendere il risultato prima di eseguire le asserzioni, altrimenti verificano troppo presto. ⏳
Contrassegnare il test come async
La soluzione più semplice è un metodo di test async. Swift consente di usare await direttamente e il runner si mette in pausa finché l'operazione non termina.
func testLoad() async {
}Attendere il metodo
All'interno di un test async può utilizzare await, proprio come nel codice reale. La riga si mette in pausa finché il ViewModel non completa il caricamento.
await vm.load()Verificare dopo l'attesa
Quando await restituisce il risultato, i dati sono pronti. A questo punto l'asserzione verifica lo stato finale, non uno stato vuoto. ✅
XCTAssertEqual(vm.items.count, 3)Test asincroni con errori
Se il codice può generare un errore, contrassegni anche il test con throws. In questo modo try await lascia propagare gli errori e fa fallire il test in modo ordinato.
func testFetch() async throws {
try await vm.fetch()
}Evitare le reti reali
Contattare un server reale rende i test lenti e instabili. Inietti invece un servizio mock che restituisca dati fissi.
Un servizio mock
Un mock è conforme allo stesso protocollo, ma restituisce valori predefiniti. Il ViewModel non può distinguere la differenza, quindi la logica viene testata in modo veritiero.
struct MockAPI: API {
func load() async -> [Item] { sample }
}Testare il percorso di errore
Faccia in modo che il mock generi un errore su richiesta. Potrà così verificare che il ViewModel imposti uno stato di errore invece di andare in crash.
Le aspettative per i callback
Per le API callback meno recenti, utilizzi un'XCTestExpectation. La soddisfi all'interno del callback, poi attenda affinché il test non termini troppo presto.
let exp = expectation(description: "done")Attendere con un timeout
Abbini ogni aspettativa a un timeout. Se il callback non viene mai eseguito, il test fallisce rapidamente invece di rimanere bloccato per sempre.
await fulfillment(of: [exp], timeout: 2)Preferire async ai callback
Quando possibile, scriva il codice con async/await. I test rimangono brevi e lineari e sono molto più facili da leggere rispetto ai callback annidati.
Verifica rapida
Come si dovrebbe attendere un'operazione asincrona in un XCTest moderno?
Riepilogo
Ora sa testare il codice async: contrassegnare i test come async, attendere i risultati, simulare la rete e usare le aspettative per i callback. Affidabile a ogni esecuzione. 🎉
Impara Swift con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Testare il codice asincrono» è gratuita?
Sì — il testo completo di «Testare il codice asincrono» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SwiftUI Academy, passa a CoddyKit PRO. Il corso SwiftUI Academy include 4 lezioni in totale.
Cosa imparerò in «Testare il codice asincrono»?
Verifichi in modo affidabile i flussi async/await. Eserciti SwiftUI Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SwiftUI Academy?
Non è richiesta alcuna esperienza precedente. SwiftUI Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Testare il codice asincrono»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SwiftUI Academy?
Sì. Ogni lezione SwiftUI Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Test unitari dei ViewModel
- Testare il codice asincrono
- Test UI con XCUITest
- Test basati su snapshot e preview