SwiftUI Academy · Lezione

Testare il codice asincrono

Verifichi in modo affidabile i flussi async/await.

Lezione 2 di 413 passaggi

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. 🎉

Gratis per iniziare

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

  1. Test unitari dei ViewModel
  2. Testare il codice asincrono
  3. Test UI con XCUITest
  4. Test basati su snapshot e preview
← Torna a SwiftUI Academy