Pidä testit deterministisinä eksplisiittisillä konteilla.

Useimmat testiskenaariot kartoituvat suoraan ProviderContainer-rajapintoihin: read, invalidate, refresh, listen ja provider-instanssikohtaiset overridet.

Test Strategy

Jaa testit puhtaisiin container-testeihin ja widget-integraatiotesteihin.

Pure Dart

Käytä ProviderContaineria suoraan read/invalidate/refresh-assertioihin

Overrides

Ylikirjoita provider-instanssikohtaisesti overrideWith / overrideWithValue

Widget tests

Syötä ulkoinen kontti ja vapauta se eksplisiittisesti

Tip

ProviderContainer.listen ei emittoi alkuarvoa, ellei fireImmediately: true ole määritetty.

Testikomento ja tarkistuslista

Aja koko testisarja ja varmista, ettei autoDispose-skenaarioissa ole odottavia ajastinvuotoja.

Command

Checklist

- Dispose externally injected ProviderContainer in tearDown.
- Use fireImmediately: true when your listener assertions need initial state.
- For autoDispose tests, advance fake time beyond autoDisposeDelay.

Esimerkki: argumenttikohtainen override

Perhetyyppiset providerit ylikirjoitetaan yksittäisittäin tehtaan funktiosta luodulle instanssille.

class ProductById extends Provider<Product> {
  ProductById(this.id) : super.args((id,));
  final String id;

  @override
  Product build(ref) {
    final repo = ref.watch(productRepoProvider);
    return repo.fetch(id);
  }
}

final container = ProviderContainer(
  overrides: [
    productByIdProvider('a').overrideWithValue(const Product(id: 'a', name: 'stub')),
  ],
);

// assert and cleanup
container.dispose();
Tämä malli vastaa README:tä ja miniriverpod-arkiston upstream-testejä.
Widget-testien tulisi irrottaa widgetit ennen ulkoisten konttien vapauttamista.
Käytä fake_asyncia validoidaksesi autoDispose-viiveet ja keepAlive-käyttäytymisen.

Seuraavat askeleet

API Reference

Avaa nopeat allekirjoitukset ProviderContainerille, Refiin, AsyncValueen ja mutation-rajapinnoille.

Open API Reference

Back to Overview

Palaa miniriverpodin täydelliseen dokumentaatiokarttaan.

Open Overview