Tester le code asynchrone et les flux
Attendre les futures et vérifier les séquences d’événements
Tester le code asynchrone et les flux est une leçon Dart Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Dart Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Dart Academy comprend 4 leçons au total.
L'asynchrone demande de l'attention
Beaucoup de code réel renvoie un Future. Si un test oublie d'attendre, il peut réussir avant même la fin du traitement. ⏳
Renvoyer ou attendre
L'exécuteur attend lorsque le corps de votre test est async et que vous attendez le traitement, ou lorsque vous renvoyez directement le Future.
test('loads user', () async {
final u = await fetchUser();
expect(u.name, 'Ada');
});expectLater pour les Future
Utilisez expectLater lorsque la valeur comparée est elle-même un Future, par exemple pour vérifier qu'un Future se termine avec un résultat donné.
await expectLater(fetchValue(), completion(42));Le comparateur completion
Le comparateur completion réussit lorsqu'un Future se termine correctement et que sa valeur correspond au comparateur interne.
expectLater(load(), completion(isNotEmpty));Vérifier les erreurs asynchrones
Pour vérifier qu'un Future échoue, associez expectLater à throwsA afin de vous assurer que la bonne erreur est levée.
await expectLater(
risky(), throwsA(isA<StateError>()));Les flux émettent plusieurs valeurs
Un Stream envoie une suite d'événements au fil du temps. Le tester consiste à vérifier toute cette suite, dans l'ordre.
Le comparateur emits
Utilisez emits pour vérifier la prochaine valeur produite par un flux, et emitsInOrder pour vérifier une suite attendue.
await expectLater(
counter, emitsInOrder([1, 2, 3]));Signaler la fin
Le comparateur emitsDone vérifie qu'un flux se ferme au moment attendu, en détectant ceux qui ne se terminent jamais.
expectLater(ticks, emitsThrough(emitsDone));Les flux peuvent aussi produire des erreurs
Combinez les comparateurs pour attendre une erreur dans un flux avec emitsError, et vérifiez ainsi que les échecs arrivent sous forme d'événements.
emitsInOrder([1, emitsError(isException)]);Méfiez-vous des réussites trompeuses
Un problème courant : oublier await signifie que le test se termine prématurément et réussit silencieusement. Attendez ou renvoyez toujours le traitement asynchrone.
Les délais d'attente vous protègent
Si le code asynchrone se bloque, l'exécuteur l'arrête. Vous pouvez ajuster l'attente avec un timeout pour un test lent.
test('slow', () async { /* ... */ },
timeout: Timeout(Duration(seconds: 5)));Vérification rapide
Comment vérifier qu'un flux émet 1, 2, 3 dans cet ordre ?
Récapitulatif
Vous avez attendu les Futures, utilisé expectLater avec completion et throwsA, et vérifié les flux avec les comparateurs emits. De l'asynchrone testé en toute confiance. 🌊
Questions Fréquemment Posées
La leçon « Tester le code asynchrone et les flux » est-elle gratuite ?
Oui — le texte complet de « Tester le code asynchrone et les flux » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Dart Academy, passe à CoddyKit PRO. Le cours Dart Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Tester le code asynchrone et les flux » ?
Attendre les futures et vérifier les séquences d’événements Tu pratiques Dart Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Dart Academy ?
Aucune expérience préalable n'est requise. Dart Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Tester le code asynchrone et les flux » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Dart Academy ?
Oui. Chaque leçon Dart Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Votre premier test et expect
- group, setUp et tearDown
- Tester le code asynchrone et les flux
- Objets simulés, doublures et couverture