احتفظ بالاختبارات لتكون قابلة للتكرار مع الحاويات المحددة.
أكثر السيناريوهات اختبارية تتوافق مباشرة مع واجهات برمجة تطبيقات ProviderContainer: القراءة، والإلغاء، والتحديث، والاستماع، والإضافات لكل مثيل مزود.
Test Strategy
اختبارات التقسيم إلى اختبارات الحاويات النقية واختبارات تكامل المكونات.
Pure Dart
استخدم ProviderContainer مباشرةً لإجراء عمليات القراءة والتحديث وإعادة الضبط.
Overrides
استبدال حسب مثيل المزود باستخدام overrideWith / overrideWithValue
Widget tests
إدخال حاوية خارجية والتخلص منها بشكل صريح
Tip
ProviderContainer.listen لا يرسل القيمة الأولية إلا إذا تم تحديد fireImmediately: true.
اختبار الأوامر وقائمة المراجعة
تشغيل المجموعة الكاملة والتحقق من عدم وجود تسربات مؤقتة في سيناريوهات التخلص التلقائي.
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.
مثال: تجاوز لكل وسيط
المزودون المشابهون للعائلة يتم تجاوزهم لكل نسخة يتم إنشاؤها من وظيفتك المصنعة.
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
فتح التوقيعات السريعة لواجهات برمجة التطبيقات ProviderContainer و Ref و AsyncValue و mutation.
Open API Reference