0Pricing
Dart Academy · Lekcja

Testowanie kodu asynchronicznego i strumieni

Oczekiwanie na future i weryfikowanie sekwencji zdarzeń

Testowanie kodu asynchronicznego i strumieni to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.

Kod asynchroniczny wymaga uwagi

Wiele rzeczywistego kodu zwraca obiekt Future. Jeśli test zapomni zaczekać, może zakończyć się powodzeniem, zanim praca w ogóle się zakończy. ⏳

Zwracanie lub await

Runner czeka, gdy treść testu jest oznaczona jako async i oczekują Państwo na wykonanie pracy za pomocą await, albo gdy zwrócą Państwo bezpośrednio obiekt Future.

test('loads user', () async {
  final u = await fetchUser();
  expect(u.name, 'Ada');
});

expectLater dla obiektów Future

Należy użyć expectLater, gdy sprawdzana wartość jest obiektem Future, na przykład podczas sprawdzania, czy Future kończy się określonym wynikiem.

await expectLater(fetchValue(), completion(42));

Matcher completion

Matcher completion kończy się powodzeniem, gdy Future zakończy się pomyślnie, a jego wartość będzie zgodna z wewnętrznym matcherem.

expectLater(load(), completion(isNotEmpty));

Sprawdzanie błędów asynchronicznych

Aby sprawdzić, czy Future kończy się błędem, należy połączyć expectLater z throwsA, dzięki czemu test zweryfikuje, czy zgłoszony został właściwy błąd.

await expectLater(
  risky(), throwsA(isA<StateError>()));

Strumienie emitują wiele wartości

Stream wysyła w czasie sekwencję zdarzeń. Testowanie strumienia oznacza sprawdzenie całej tej sekwencji, w odpowiedniej kolejności.

Matcher emits

Należy użyć emits, aby sprawdzić kolejną wartość wytworzoną przez strumień, oraz emitsInOrder dla oczekiwanej sekwencji.

await expectLater(
  counter, emitsInOrder([1, 2, 3]));

Sygnalizowanie końca

Matcher emitsDone sprawdza, czy strumień zamyka się w oczekiwanym momencie, wykrywając strumienie, które nigdy się nie kończą.

expectLater(ticks, emitsThrough(emitsDone));

Strumienie również zgłaszają błędy

Matcherów można użyć razem, aby oczekiwać błędu w strumieniu za pomocą emitsError i sprawdzić, czy błędy docierają jako zdarzenia.

emitsInOrder([1, emitsError(isException)]);

Uwaga na pozorne powodzenie

Częsty błąd: pominięcie await oznacza, że test kończy się zbyt wcześnie i kończy się po cichu powodzeniem. Zawsze należy używać await albo zwracać asynchroniczną pracę.

Limity czasu pomagają

Jeśli kod asynchroniczny się zawiesi, runner go zatrzyma. Czas oczekiwania można dostosować za pomocą timeout w przypadku wolnego testu.

test('slow', () async { /* ... */ },
  timeout: Timeout(Duration(seconds: 5)));

Szybkie sprawdzenie

Jak sprawdzić, czy strumień emituje kolejno wartości 1, 2, 3?

Podsumowanie

Oczekiwali Państwo na obiekty Future, użyli expectLater wraz z completion i throwsA oraz sprawdzili strumienie za pomocą matcherów emits. Kod asynchroniczny przetestowany z pewnością. 🌊

Często zadawane pytania

Czy lekcja „Testowanie kodu asynchronicznego i strumieni” jest bezpłatna?

Tak — pełny tekst „Testowanie kodu asynchronicznego i strumieni” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Testowanie kodu asynchronicznego i strumieni”?

Oczekiwanie na future i weryfikowanie sekwencji zdarzeń Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Dart Academy?

Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Testowanie kodu asynchronicznego i strumieni”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?

Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Państwa pierwszy test i expect
  2. group, setUp i tearDown
  3. Testowanie kodu asynchronicznego i strumieni
  4. Mocki, fake'i i pokrycie kodu
← Powrót do Dart Academy