Тестүүдийг тодорхой containers-тай 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 хийгээд, түүнийг explicit 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();
Энэ загвар нь miniriverpod repository дахь README болон upstream tests-ийг дагана.
Widget tests нь external 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