Dart Academy · Oppitunti

Asynkronisen koodin ja streamien testaaminen

Odota futureja ja varmista tapahtumajaksot

Oppitunti 3/413 vaihetta

Asynkronisen koodin ja streamien testaaminen on ilmainen Dart Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Dart Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dart Academy-kurssilla on yhteensä 4 oppituntia.

Asynkronisuus vaatii huolellisuutta

Suuri osa oikean maailman koodista palauttaa Future-olion. Jos testi unohtaa odottaa, se saattaa onnistua ennen kuin toiminto on edes valmis. ⏳

Palauta tai odota

Testien suorittaja odottaa, kun testirunko on async ja odotat toimintoa await-sanalla, tai kun palautat Futuren suoraan.

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

expectLater Future-arvoille

Käytä expectLater-funktiota, kun tarkistettava arvo on itse Future, esimerkiksi kun tarkistat, että Future valmistuu tietyn tuloksen kanssa.

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

completion-matcher

completion-matcher onnistuu, kun Future valmistuu onnistuneesti ja sen arvo vastaa sisäkkäistä matcheria.

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

Asynkronisten virheiden odottaminen

Voit tarkistaa Futuren epäonnistumisen yhdistämällä expectLater-funktion ja throwsA-matcherin. Näin testi varmistaa, että syntyy oikea virhe.

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

Streamit tuottavat useita arvoja

Stream lähettää tapahtumasarjan ajan kuluessa. Sen testaaminen tarkoittaa koko sarjan tarkistamista oikeassa järjestyksessä.

emits-matcher

Käytä emits-matcheria streamin seuraavan tuottaman arvon tarkistamiseen ja emitsInOrder-matcheria odotetun sarjan tarkistamiseen.

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

Lopun ilmoittaminen

emitsDone-matcher tarkistaa, että stream sulkeutuu odotetusti. Näin löydät streamit, jotka eivät koskaan pääty.

expectLater(ticks, emitsThrough(emitsDone));

Streamit voivat sisältää myös virheitä

Yhdistä matchereita ja odota streamin virhettä emitsError-matcherin avulla. Näin varmistat, että virheet saapuvat tapahtumina.

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

Varo näennäisiä onnistumisia

Yleinen virhe on unohtaa await: testi päättyy liian aikaisin ja onnistuu hiljaisesti. Odota asynkronista toimintoa aina await-sanalla tai palauta se.

Aikakatkaisut auttavat

Jos asynkroninen koodi jää jumiin, testien suorittaja keskeyttää sen. Voit säätää odotusaikaa käyttämällä hitaassa testissä timeout-asetusta.

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

Pikavisa

Miten tarkistat, että stream tuottaa arvot 1, 2 ja 3 tässä järjestyksessä?

Kertaus

Odottelit Future-arvoja, käytit expectLater-funktiota completion- ja throwsA-matchereiden kanssa sekä tarkistit streamit emits-matchereilla. Asynkroninen koodi testattu luottavaisin mielin. 🌊

Aloita maksutta

Opi Dart tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Asynkronisen koodin ja streamien testaaminen” ilmainen?

Kyllä – oppitunnin ”Asynkronisen koodin ja streamien testaaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Dart Academy-kurssin, päivitä CoddyKit PROhon. Dart Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Asynkronisen koodin ja streamien testaaminen”?

Odota futureja ja varmista tapahtumajaksot Harjoittelet Dart Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Dart Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Dart Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Asynkronisen koodin ja streamien testaaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Dart Academy-oppitunnilla?

Kyllä. Jokainen Dart Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ensimmäinen testisi ja expect
  2. group, setUp ja tearDown
  3. Asynkronisen koodin ja streamien testaaminen
  4. Mockit, faket ja kattavuus
← Takaisin: Dart Academy