સ્પષ્ટ containers સાથે tests ને નિર્ધારિત રાખો.

મોટાભાગના test scenarios સીધા ProviderContainer APIs સાથે નકશાય છે: read, invalidate, refresh, listen, અને દરેક provider instance માટે overrides.

Test Strategy

tests ને શુદ્ધ 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

ProviderContainer.listen fireImmediately: true નક્કી ન કરવામાં આવે ત્યાં સુધી initial value emit કરતું નથી.

પરીક્ષણ આદેશ અને ચેકલિસ્ટ

સંપૂર્ણ suite ચલાવો અને autoDispose scenarios માં કોઈ pending timer leaks ન રહે તેની ચકાસણી કરો.

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 કરવાં જોઈએ.
fake_async નો ઉપયોગ કરીને autoDispose વિલંબ અને keepAlive વર્તનને ચકાસો.

આગલા પગલાં

API Reference

ProviderContainer, Ref, AsyncValue, અને mutation APIs માટે ઝડપી signatures ખોલો.

Open API Reference

Back to Overview

miniriverpod માટેની સંપૂર્ણ documentation map પર પાછા જાઓ.

Open Overview