Gardez des tests déterministes avec des conteneurs explicites.

La plupart des scénarios de test se mappent directement aux API de ProviderContainer : read, invalidate, refresh, listen et overrides par instance de provider.

Test Strategy

Séparez les tests en tests purs de conteneur et tests d intégration de widgets.

Pure Dart

Utilisez ProviderContainer directement pour les assertions read/invalidate/refresh

Overrides

Remplacez par instance de provider avec overrideWith / overrideWithValue

Widget tests

Injectez le conteneur externe et disposez-en explicitement

Tip

ProviderContainer.listen n émet pas la valeur initiale sauf si fireImmediately: true est spécifié.

Commande de test et liste de contrôle

Exécutez l ensemble complet et vérifiez qu il n y a aucune fuite de minuteur en attente dans les scénarios 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.

Exemple : remplacement par argument

Les providers de type famille sont remplacés pour chaque instance créée à partir de votre fonction de fabrique.

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();
Ce modèle reprend le README et les tests amont du dépôt miniriverpod.
Les tests de widgets doivent démonter les widgets avant de disposer des conteneurs externes.
Utilisez fake_async pour valider les délais autoDispose et le comportement keepAlive.

?tapes suivantes

API Reference

Ouvrez des signatures rapides pour ProviderContainer, Ref, AsyncValue et les API de mutations.

Open API Reference

Back to Overview

Revenez à la carte complète de la documentation miniriverpod.

Open Overview