ရှင်းလင်းသော 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 လုပ်ပြီး ၎င်းကို explicit စွာ dispose လုပ်ပါ

Tip

fireImmediately: true မသတ်မှတ်ထားလျှင် ProviderContainer.listen သည် initial 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 ၏ full documentation map သို့ ပြန်သွားပါ။

Open Overview