පැහැදිලි 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 එක run කර 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