Ohranite teste deterministične z eksplicitnimi vsebniki.

Večina testnih scenarijev se neposredno preslika na API-je ProviderContainerja: read, invalidate, refresh, listen in preglasitve za vsako instanco providerja.

Test Strategy

Teste razdelite na čiste container teste in integracijske teste gradnikov.

Pure Dart

Za trditve read/invalidate/refresh uporabljajte neposredno ProviderContainer

Overrides

Prepišite vsako instanco providerja z overrideWith / overrideWithValue

Widget tests

Vstavite zunanji vsebnik in ga izrecno disposeajte

Tip

ProviderContainer.listen ne odda začetne vrednosti, razen če je podan fireImmediately: true.

Ukaz za testiranje in kontrolni seznam

Zaženite celoten nabor in preverite, da v scenarijih autoDispose ni preostalih puščanj časovnikov.

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.

Primer: preglasitev po argumentu

Providerji tipa family se preglasijo za vsako instanco, ustvarjeno z vašo tovarniško funkcijo.

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();
Ta vzorec sledi README-ju in testom iz izvornega projekta v repozitoriju miniriverpod.
Pri testih gradnikov je treba gradnike odmontirati, preden odstranite zunanje vsebnike.
Uporabite fake_async za preverjanje zakasnitev autoDispose in vedenja keepAlive.

Naslednji koraki

API Reference

Odprite hitre podpise za ProviderContainer, Ref, AsyncValue in API-je za mutacije.

Open API Reference

Back to Overview

Vrnite se na celovit zemljevid dokumentacije za miniriverpod.

Open Overview