Mantén las pruebas deterministas con contenedores explícitos.

La mayoría de los escenarios de prueba se mapean directamente a las APIs de ProviderContainer: read, invalidate, refresh, listen y overrides por instancia de provider.

Test Strategy

Divide las pruebas en pruebas puras de contenedor y pruebas de integración de widgets.

Pure Dart

Usa ProviderContainer directamente para aserciones de read/invalidate/refresh

Overrides

Sobrescribe por instancia de provider con overrideWith / overrideWithValue

Widget tests

Inyecta el contenedor externo y dispónlo explícitamente

Tip

ProviderContainer.listen no emite el valor inicial a menos que se especifique fireImmediately: true.

Comando de prueba y lista de verificación

Ejecuta el conjunto completo y verifica que no haya fugas de temporizadores pendientes en escenarios 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.

Ejemplo: override por argumento

Los providers de tipo familia se sobrescriben por instancia creada a partir de tu función de fábrica.

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();
Este patrón refleja el README y las pruebas upstream del repositorio miniriverpod.
Las pruebas de widgets deben desmontar los widgets antes de disponer de contenedores externos.
Usa fake_async para validar los retrasos de autoDispose y el comportamiento de keepAlive.

Siguientes pasos

API Reference

Abre firmas rápidas de ProviderContainer, Ref, AsyncValue y las APIs de mutations.

Open API Reference

Back to Overview

Vuelve al mapa completo de documentación de miniriverpod.

Open Overview