ಸ್ಪಷ್ಟ containers ನೊಂದಿಗೆ tests ಅನ್ನು deterministic ಆಗಿ ಇಟ್ಟುಕೊಳ್ಳಿ.
ಹೆಚ್ಚಿನ test scenarios ನೇರವಾಗಿ ProviderContainer APIs ಗೆ map ಆಗುತ್ತವೆ: read, invalidate, refresh, listen, ಮತ್ತು provider instance ಆಧಾರಿತ overrides.
Test Strategy
tests ಅನ್ನು pure container tests ಮತ್ತು widget integration tests ಆಗಿ ವಿಭಜಿಸಿ.
Pure Dart
read/invalidate/refresh assertions ಗಾಗಿ ನೇರವಾಗಿ ProviderContainer ಬಳಸಿ
Overrides
overrideWith / overrideWithValue ಮೂಲಕ provider instance ಆಧಾರಿತವಾಗಿ override ಮಾಡಿ
Widget tests
external container ಅನ್ನು inject ಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ dispose ಮಾಡಿ
Tip
fireImmediately: true ಸೂಚಿಸದಿದ್ದರೆ ProviderContainer.listen ಪ್ರಾರಂಭಿಕ value ಅನ್ನು emit ಮಾಡುವುದಿಲ್ಲ.
Test command ಮತ್ತು checklist
ಪೂರ್ಣ suite ಅನ್ನು ಚಾಲನೆ ಮಾಡಿ ಮತ್ತು autoDispose scenarios ನಲ್ಲಿ pending timer leak ಇಲ್ಲದೆ ಇರುವುದನ್ನು verify ಮಾಡಿ.
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.
ಉದಾಹರಣೆ: argument ಆಧಾರಿತ override
family-like providers ನಿಮ್ಮ factory function ನಿಂದ ಸೃಷ್ಟಿಯಾದ ಪ್ರತಿ instance ಗೆ override ಆಗುತ್ತವೆ.
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();
ಮುಂದಿನ ಹಂತಗಳು
API Reference
ProviderContainer, Ref, AsyncValue, ಮತ್ತು mutation APIs ಗಾಗಿ quick signatures ತೆರೆಯಿರಿ.
Open API Reference