Kekalkan ujian deterministik dengan bekas yang jelas.

Kebanyakan senario ujian dipetakan terus kepada API ProviderContainer: read, invalidate, refresh, listen dan override bagi setiap instance provider.

Test Strategy

Bahagikan ujian kepada ujian container tulen dan ujian integrasi widget.

Pure Dart

Gunakan ProviderContainer secara terus untuk pengesahan read/invalidate/refresh

Overrides

Override mengikut instance provider dengan overrideWith / overrideWithValue

Widget tests

Suntik bekas luaran dan dispose secara eksplisit

Tip

ProviderContainer.listen tidak memancarkan nilai awal melainkan fireImmediately: true dinyatakan.

Arahan ujian dan senarai semak

Jalankan keseluruhan suite dan sahkan tiada kebocoran timer yang menunggu dalam senario 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.

Contoh: override mengikut argumen

Provider seperti keluarga di-override bagi setiap instance yang dicipta oleh fungsi factory anda.

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();
Corak ini mengikuti README dan ujian upstream dalam repositori miniriverpod.
Ujian widget harus men-unmount widget sebelum dispose bekas luaran.
Gunakan fake_async untuk mengesahkan kelewatan autoDispose dan tingkah laku keepAlive.

Langkah seterusnya

API Reference

Buka signature ringkas untuk ProviderContainer, Ref, AsyncValue dan API mutation.

Open API Reference

Back to Overview

Kembali ke peta dokumentasi penuh miniriverpod.

Open Overview