احتفظ بالاختبارات لتكون قابلة للتكرار مع الحاويات المحددة.
أكثر السيناريوهات اختبارية تتوافق مباشرة مع واجهات برمجة تطبيقات ProviderContainer: القراءة، والإلغاء، والتحديث، والاستماع، والإضافات لكل مثيل مزود.
استراتيجية الاختبار
اختبارات التقسيم إلى اختبارات الحاويات النقية واختبارات تكامل المكونات.
Pure Dart
استخدم ProviderContainer مباشرةً لإجراء عمليات القراءة والتحديث وإعادة الضبط.
الإعفاءات
استبدال حسب مثيل المزود باستخدام overrideWith / overrideWithValue
اختبارات المكون
إدخال حاوية خارجية والتخلص منها بشكل صريح
تلميح
ProviderContainer.listen لا يرسل القيمة الأولية إلا إذا تم تحديد fireImmediately: true.
اختبار الأوامر وقائمة المراجعة
تشغيل المجموعة الكاملة والتحقق من عدم وجود تسربات مؤقتة في سيناريوهات التخلص التلقائي.
الأمر
قائمة مرجعية
- التخلص من حاوية المزود المُدخلة خارجيًا في tearDown.
- استخدم fireImmediately: true عندما تحتاج إلى حالة أولية في اختبارات المستمع الخاصة بك.
- بالنسبة لاختبارات التخلص التلقائي، قم بتمرير الوقت بشكل أسرع من autoDisposeDelay.
مثال: تجاوز لكل وسيط
المزودون المشابهون للعائلة يتم تجاوزهم لكل نسخة يتم إنشاؤها من وظيفتك المصنعة.
فئة class 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);
}
}
فائلي container = ProviderContainer(
overrides: [
productByIdProvider('a').overrideWithValue(const Product(id: 'a', name: 'stub')),
],
);
// assert and cleanup
container.dispose();
الخطوات التالية
StateProvider
فتح التوقيعات السريعة لواجهات برمجة التطبيقات ProviderContainer و Ref و AsyncValue و mutation.
مرجع واجهة برمجة التطبيقات المفتوحة