Jaga pengujian tetap deterministik dengan container eksplisit.

Sebagian besar skenario pengujian dipetakan langsung ke API ProviderContainer: read, invalidate, refresh, listen, dan override per instance provider.

Test Strategy

Pisahkan pengujian menjadi pengujian container murni dan pengujian integrasi widget.

Pure Dart

Gunakan ProviderContainer secara langsung untuk asersi read/invalidate/refresh

Overrides

Override per instance provider dengan overrideWith / overrideWithValue

Widget tests

Suntikkan container eksternal dan dispose secara eksplisit

Tip

ProviderContainer.listen tidak memancarkan nilai awal kecuali fireImmediately: true ditentukan.

Perintah pengujian dan daftar periksa

Jalankan seluruh suite dan pastikan tidak ada kebocoran timer yang tertunda dalam skenario 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 per argumen

Provider bertipe keluarga di-override per instance yang dibuat 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();
Pola ini mengikuti README dan pengujian upstream di repositori miniriverpod.
Pengujian widget harus me-unmount widget sebelum membuang container eksternal.
Gunakan fake_async untuk memvalidasi penundaan autoDispose dan perilaku keepAlive.

Langkah Selanjutnya

API Reference

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

Open API Reference

Back to Overview

Kembali ke peta dokumentasi lengkap miniriverpod.

Open Overview