testState<S extends AirState> function

Future<void> testState<S extends AirState>({
  1. required S createState(),
  2. Map<String, dynamic> initialState = const {},
  3. required Future<void> test(
    1. S state,
    2. AirTestHarness harness
    ),
})

Test an AirState in isolation

Example:

await testState(
  createState: () => CartState(),
  initialState: {'cart.items': []},
  test: (state, harness) async {
    harness.emitSignal('cart.add', {'productId': '123'});
    await harness.pump();
    expect(harness.getState('cart.items'), hasLength(1));
  },
);

Implementation

Future<void> testState<S extends AirState>({
  required S Function() createState,
  Map<String, dynamic> initialState = const {},
  required Future<void> Function(S state, AirTestHarness harness) test,
}) async {
  final harness = AirTestHarness(initialState: initialState);
  late S state;

  try {
    harness.setup();
    state = createState();
    await test(state, harness);
  } finally {
    state.dispose();
    harness.teardown();
  }
}