Mock, fake e coverage
Isolare le unità e misurare ciò che si testa
Mock, fake e coverage è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 4 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 Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.
Isolare l'unità
Un test unitario dovrebbe verificare un singolo elemento in isolamento. Database o reti reali rendono i test lenti e instabili, quindi li sostituiamo. 🔌
Test double
Un test double sostituisce una dipendenza reale. Mock, fake e stub sono le varianti più comuni a cui ricorrere.
Che cos'è un fake
Un fake offre un'implementazione funzionante ma semplificata, come una lista in memoria al posto di un database reale.
class FakeRepo implements Repo {
final _items = <Item>[];
}Che cos'è un mock
Un mock registra come viene chiamato, così può verificare le interazioni e non solo i valori finali.
Il package mockito
Il package mockito genera mock automaticamente. Annoti il tipo desiderato ed esegua build_runner per crearlo.
@GenerateMocks([Repo])
import 'repo_test.mocks.dart';Creare stub con when
Usi when per configurare un mock: quando viene chiamato questo metodo, restituisci questo valore, così il comportamento è prevedibile.
when(repo.find(1))
.thenReturn(Item('a'));Verificare le chiamate
Usi verify per verificare che un metodo sia stato chiamato e quante volte, dimostrando che il codice ha comunicato correttamente con la dipendenza.
verify(repo.save(any)).called(1);Configurare gli stub asincroni
Per i metodi che restituiscono un Future, li configuri con thenAnswer, così il mock può restituire un risultato asincrono.
when(api.load())
.thenAnswer((_) async => 'ok');Mock e fake a confronto
Scelga un fake quando serve un comportamento realistico e un mock quando è importante sapere quali chiamate sono avvenute.
Che cosa misura la coverage
La coverage misura quali righe vengono effettivamente eseguite dai test. Una coverage elevata suggerisce accuratezza, ma non garantisce mai la correttezza.
Generare la coverage
Esegua i test raccogliendo i dati di coverage, poi trasformi i dati in un report da leggere o caricare in uno strumento.
dart test --coverage=coverageVerifica rapida
Quale double registra le chiamate per consentirne la verifica?
Riepilogo
Ha isolato le unità con fakes and mocks, creato stub con when, verificato le chiamate e misurato la coverage. Test rapidi, focalizzati e affidabili. 🎯
Domande Frequenti
La lezione «Mock, fake e coverage» è gratuita?
Sì — il testo completo di «Mock, fake e coverage» è 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 Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.
Cosa imparerò in «Mock, fake e coverage»?
Isolare le unità e misurare ciò che si testa Eserciti Dart 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 Dart Academy?
Non è richiesta alcuna esperienza precedente. Dart 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 4 di 4.
Quanto tempo richiede la lezione «Mock, fake e coverage»?
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 Dart Academy?
Sì. Ogni lezione Dart 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
- Il primo test e expect
- group, setUp e tearDown
- Testare il codice async e gli stream
- Mock, fake e coverage