ಸ್ಪಷ್ಟ 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();
ಈ pattern miniriverpod repository ಯಲ್ಲಿನ README ಮತ್ತು upstream tests ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ.
widget tests ಗಳು external containers dispose ಮಾಡುವ ಮೊದಲು widgets ಅನ್ನು unmount ಮಾಡಬೇಕು.
autoDispose delays ಮತ್ತು keepAlive behavior ಅನ್ನು ಪರಿಶೀಲಿಸಲು fake_async ಬಳಸಿ.

ಮುಂದಿನ ಹಂತಗಳು

API Reference

ProviderContainer, Ref, AsyncValue, ಮತ್ತು mutation APIs ಗಾಗಿ quick signatures ತೆರೆಯಿರಿ.

Open API Reference

Back to Overview

miniriverpod ನ ಸಂಪೂರ್ಣ documentation map ಗೆ ಮರಳಿ ಹೋಗಿ.

Open Overview