រក្សាការសាកល្បងឲ្យមានលទ្ធផលថេរដោយប្រើ containers ច្បាស់លាស់។

សេណារីយោសាកល្បងភាគច្រើនផ្គូផ្គងដោយផ្ទាល់ទៅ ProviderContainer APIs: read, invalidate, refresh, listen និង overrides សម្រាប់រាល់ provider instance។

Test Strategy

បំបែកការសាកល្បងជា pure container tests និង widget integration tests។

Pure Dart

ប្រើ ProviderContainer ដោយផ្ទាល់សម្រាប់ការអះអាង read/invalidate/refresh

Overrides

override instance នីមួយៗដោយ overrideWith / overrideWithValue

Widget tests

បញ្ចូល container ខាងក្រៅ ហើយ dispose វាឲ្យច្បាស់លាស់

Tip

ProviderContainer.listen មិនបញ្ចេញ value ដំបូងទេ លុះត្រាតែ fireImmediately: true ត្រូវបានកំណត់។

ពាក្យបញ្ជាសាកល្បង និងបញ្ជីត្រួតពិនិត្យ

រត់ suite ពេញលេញ ហើយផ្ទៀងផ្ទាត់ថាមិនមាន timer leaks នៅសេសសល់ក្នុងសេណារីយោ autoDispose។

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 តាម argument

providers ប្រភេទ family ត្រូវបាន override សម្រាប់គ្រប់ instance ដែលបង្កើតដោយ factory function របស់អ្នក។

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();
លំនាំនេះស្រដៀងនឹង README និងការសាកល្បង upstream នៅក្នុងឃ្លាំង miniriverpod។
ការសាកល្បង widget គួរតែ unmount widgets មុនពេល dispose container ខាងក្រៅ។
ប្រើ fake_async ដើម្បីផ្ទៀងផ្ទាត់ការពន្យារពេល autoDispose និងឥរិយាបថ keepAlive។

ជំហានបន្ទាប់

API Reference

បើក signatures រហ័សសម្រាប់ ProviderContainer, Ref, AsyncValue និង mutation APIs។

Open API Reference

Back to Overview

ត្រឡប់ទៅផែនទីឯកសារពេញលេញសម្រាប់ miniriverpod។

Open Overview