Hold tests deterministiske med eksplicitte containere.
De fleste testsituationer mappes direkte til ProviderContainer-APIer: read, invalidate, refresh, listen og overrides pr. provider-instans.
Test Strategy
Opdel tests i rene container-tests og widget-integrationstests.
Pure Dart
Brug ProviderContainer direkte til read/invalidate/refresh-assertioner
Overrides
Overskriv pr. provider-instans med overrideWith / overrideWithValue
Widget tests
Injicer den eksterne container og dispose den eksplicit
Tip
ProviderContainer.listen udsender ikke den indledende værdi, medmindre fireImmediately: true er angivet.
Testkommando og tjekliste
Kør hele sættet og verificer, at der ikke er nogen ventende timer-lækager i autoDispose-scenarier.
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.
Eksempel: override pr. argument
Familielignende providers overskrives pr. instans, der oprettes af din fabriksfunktion.
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();
Næste skridt
API Reference
Åbn hurtige signaturer for ProviderContainer, Ref, AsyncValue og mutation-APIer.
Open API Reference