រក្សាការសាកល្បងឲ្យមានលទ្ធផលថេរដោយប្រើ 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();
ជំហានបន្ទាប់
API Reference
បើក signatures រហ័សសម្រាប់ ProviderContainer, Ref, AsyncValue និង mutation APIs។
Open API Reference