Asynkronisen koodin ja streamien testaaminen
Odota futureja ja varmista tapahtumajaksot
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. 🌊
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
- Ensimmäinen testisi ja expect
- group, setUp ja tearDown
- Asynkronisen koodin ja streamien testaaminen
- Mockit, faket ja kattavuus