स्पष्ट containers सह tests deterministic ठेवा.

बहुतेक test scenarios थेट ProviderContainer APIs शी map होतात: read, invalidate, refresh, listen, आणि provider instance नुसार overrides.

Test Strategy

tests ला pure container tests आणि widget integration tests मध्ये विभागा.

Pure Dart

read/invalidate/refresh assertions साठी थेट ProviderContainer वापरा

Overrides

overrideWith / overrideWithValue सह provider instance नुसार override करा

Widget tests

external container inject करा आणि ते स्पष्टपणे dispose करा

Tip

fireImmediately: true निर्दिष्ट केले नसल्यास ProviderContainer.listen सुरुवातीचे value emit करत नाही.

Test command आणि checklist

संपूर्ण suite चालवा आणि autoDispose scenarios मध्ये pending timer leak नाही याची खात्री करा.

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.

उदाहरण: argument नुसार override

family-like providers तुमच्या factory function ने तयार केलेल्या प्रत्येक instance साठी override होतात.

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();
हा pattern miniriverpod repository मधील README आणि upstream tests चे अनुसरण करतो.
widget tests ने external containers dispose करण्यापूर्वी widgets unmount केले पाहिजेत.
autoDispose delays आणि keepAlive behavior पडताळण्यासाठी fake_async वापरा.

पुढील पावले

API Reference

ProviderContainer, Ref, AsyncValue, आणि mutation APIs साठी quick signatures उघडा.

Open API Reference

Back to Overview

miniriverpod च्या पूर्ण documentation map कडे परत जा.

Open Overview