Păstrează testele deterministe cu containere explicite.

Cele mai multe scenarii de test se mapează direct pe API-urile ProviderContainer: read, invalidate, refresh, listen și override-uri per instanță de provider.

Test Strategy

Separă testele în teste pure de container și teste de integrare a widget-urilor.

Pure Dart

Folosește ProviderContainer direct pentru afirmațiile read/invalidate/refresh

Overrides

Suprascrie per instanță de provider cu overrideWith / overrideWithValue

Widget tests

Injctează containerul extern și disposează-l explicit

Tip

ProviderContainer.listen nu emite valoarea inițială decât dacă este specificat fireImmediately: true.

Comanda de test și lista de verificare

Rulează întreaga suită și verifică faptul că nu există scurgeri de timer în așteptare în scenariile 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.

Exemplu: override per argument

Provider-ele de tip familie sunt suprascrise pentru fiecare instanță creată de funcția ta de fabrică.

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();
Acest model urmează README-ul și testele upstream din repository-ul miniriverpod.
Testele de widget-uri ar trebui să demonteze widget-urile înainte de a elibera containerele externe.
Folosește fake_async pentru a valida întârzierile autoDispose și comportamentul keepAlive.

Pașii următori

API Reference

Deschide semnături rapide pentru ProviderContainer, Ref, AsyncValue și API-urile mutation.

Open API Reference

Back to Overview

Revino la harta completă a documentației miniriverpod.

Open Overview