Haltu prófum ákvarðanlegum með skýrum container-um.
Flestar prófunaraðstæður samsvara beint ProviderContainer API-um: read, invalidate, refresh, listen og overrides á hverju provider-tilviki.
Prófunarstefna
Skiptu prófum í hrein container-próf og widget-samþættingarpróf.
Hreint Dart
Notaðu ProviderContainer beint fyrir read/invalidate/refresh staðfestingar
Overrides
Override-aðu hvert provider-tilvik með overrideWith / overrideWithValue
Widget-próf
Sprautaðu inn ytra container og losaðu það skýrt
Ábending
ProviderContainer.listen sendir ekki upphafsgildi nema fireImmediately: true sé tilgreint.
Prófskipun og gátlisti
Keyrðu allt prófasafnið og staðfestu að engir biðtímaleikar séu í autoDispose-aðstæðum.
Skipun
Gátlisti
- Losaðu ProviderContainer sem er sprautað inn utan frá í tearDown.
- Notaðu fireImmediately: true þegar listener-staðfestingar þurfa upphafsstöðu.
- Fyrir autoDispose-próf skaltu færa fake-tíma fram yfir autoDisposeDelay.
Dæmi: override eftir argumenti
Family-líkir provider-ar eru override-aðir fyrir hvert tilvik sem factory-fallið þitt býr til.
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')),
],
);
// staðfesting og hreinsun
container.dispose();
Næstu skref
API-tilvísun
Opnaðu fljótlegar undirskriftir fyrir ProviderContainer, Ref, AsyncValue og mutation-API.
Opna API-tilvísun