Testтерди так containers менен deterministic абалда кармаңыз.

Көпчүлүк test scenarios түздөн-түз ProviderContainer APIs-ке map болот: read, invalidate, refresh, listen жана provider instance боюнча override-лор.

Test Strategy

Testтерди таза container tests жана widget integration testsке бөлүңүз.

Pure Dart

read/invalidate/refresh assertions үчүн ProviderContainerды түз колдонуңуз

Overrides

overrideWith / overrideWithValue менен provider instance боюнча override жасаңыз

Widget tests

Тышкы containerды inject кылып, аны explicit түрдө dispose кылыңыз

Tip

fireImmediately: true көрсөтүлбөсө, ProviderContainer.listen баштапкы valueны emit кылбайт.

Test command жана checklist

Толук suite-ти иштетип, autoDispose scenarios-да күтүүчү 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.

Мисал: аргумент боюнча override

family-like providers factory функцияңыз түзгөн ар бир 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();
Бул үлгү miniriverpod repositoryдеги README жана upstream tests-ке ылайык келет.
Widget tests тышкы containers dispose кылуудан мурун widget-терди 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