Asynchronen Code und Streams testen
Warten Sie Futures ab und prüfen Sie Ereignisfolgen
Asynchronen Code und Streams testen ist eine kostenlose Dart Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Dart Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Asynchrone Abläufe brauchen Sorgfalt
Viel echter Code gibt ein Future zurück. Wenn ein Test nicht auf das Ergebnis wartet, besteht er möglicherweise, bevor die Arbeit überhaupt abgeschlossen ist. ⏳
Zurückgeben oder await verwenden
Der Runner wartet, wenn Ihr Test-Body async ist und Sie auf den Vorgang warten, oder wenn Sie das Future direkt zurückgeben.
test('loads user', () async {
final u = await fetchUser();
expect(u.name, 'Ada');
});expectLater für Futures
Verwenden Sie expectLater, wenn der geprüfte Wert selbst ein Future ist, etwa um zu prüfen, ob ein Future mit einem bestimmten Ergebnis abgeschlossen wird.
await expectLater(fetchValue(), completion(42));Der completion-Matcher
Der completion-Matcher ist erfolgreich, wenn ein Future erfolgreich abgeschlossen wird und sein Wert zum inneren Matcher passt.
expectLater(load(), completion(isNotEmpty));Asynchrone Fehler erwarten
Um zu prüfen, ob ein Future fehlschlägt, kombinieren Sie expectLater mit throwsA. So verifiziert der Test, dass der richtige Fehler ausgelöst wird.
await expectLater(
risky(), throwsA(isA<StateError>()));Streams geben viele Werte aus
Ein Stream sendet im Laufe der Zeit eine Folge von Ereignissen. Beim Testen prüfen Sie diese gesamte Folge in der richtigen Reihenfolge.
Der emits-Matcher
Verwenden Sie emits, um den nächsten von einem Stream erzeugten Wert zu prüfen, und emitsInOrder für eine erwartete Folge.
await expectLater(
counter, emitsInOrder([1, 2, 3]));Das Ende signalisieren
Der emitsDone-Matcher prüft, ob ein Stream wie erwartet geschlossen wird, und findet Streams, die nie enden.
expectLater(ticks, emitsThrough(emitsDone));Auch Streams können Fehler ausgeben
Kombinieren Sie Matcher mit emitsError, um einen Fehler in einem Stream zu erwarten und zu verifizieren, dass Fehler als Ereignisse eintreffen.
emitsInOrder([1, emitsError(isException)]);Vorsicht vor scheinbar erfolgreichen Tests
Ein häufiger Fehler: Wenn Sie await vergessen, endet der Test zu früh und besteht unbemerkt. Warten Sie auf asynchrone Vorgänge immer mit await oder geben Sie sie zurück.
Timeouts helfen Ihnen
Wenn asynchroner Code hängen bleibt, beendet der Runner ihn. Bei einem langsamen Test können Sie die Wartezeit mit einem timeout anpassen.
test('slow', () async { /* ... */ },
timeout: Timeout(Duration(seconds: 5)));Schnellcheck
Wie prüfen Sie, ob ein Stream 1, 2 und 3 in dieser Reihenfolge ausgibt?
Zusammenfassung
Sie haben auf Futures gewartet, expectLater mit completion und throwsA verwendet und Streams mit emits-Matchern geprüft. Asynchroner Code, zuverlässig getestet. 🌊
Häufig gestellte Fragen
Ist die Lektion „Asynchronen Code und Streams testen“ kostenlos?
Ja — der vollständige Text von „Asynchronen Code und Streams testen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Dart Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Asynchronen Code und Streams testen“?
Warten Sie Futures ab und prüfen Sie Ereignisfolgen Du übst Dart Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Dart Academy zu starten?
Keine Vorkenntnisse erforderlich. Dart Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Asynchronen Code und Streams testen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Dart Academy-Lektion Code schreiben und ausführen?
Ja. Jede Dart Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ihr erster test- und expect-Test
- group, setUp und tearDown
- Asynchronen Code und Streams testen
- Mocks, Fakes und Testabdeckung