Houd tests deterministisch met expliciete containers.
De meeste testscenario's sluiten direct aan op de API's van ProviderContainer: read, invalidate, refresh, listen en overrides per provider-instantie.
Teststrategie
Verdeel tests in pure container-tests en widget-integratietests.
Puur Dart
Gebruik ProviderContainer rechtstreeks voor read/invalidate/refresh-assertions
Overrides
Overschrijf per provider-instantie met overrideWith / overrideWithValue
Widget-tests
Injecteer een externe container en ruim deze expliciet op
Tip
ProviderContainer.listen verzendt de initiële waarde niet, tenzij fireImmediately: true is opgegeven.
Testcommando en checklist
Voer de volledige testsuite uit en controleer op eventuele timer-lekken in autoDispose-scenario's.
Commando
Checklist
- Ruim de extern geïnjecteerde ProviderContainer op in tearDown.
- Gebruik fireImmediately: true wanneer je listener-assertions de initiële status nodig hebben.
- Verhoog bij autoDispose-tests de fake tijd tot voorbij de autoDisposeDelay.
Voorbeeld: overschrijven per argument
family-achtige providers worden overschreven per instantie die is gemaakt via je factory-functie.
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();
Volgende stappen
API-referentie
Bekijk snel de handtekeningen voor ProviderContainer, Ref, AsyncValue en mutation-API's.
Open API-referentieTerug naar overzicht
Keer terug naar het volledige overzicht van de documentatie voor miniriverpod.
Open overzicht