testing library
Testing utilities for Juice blocs.
This library provides helpers for testing Juice blocs including:
- BlocTester for simplified bloc testing with assertions
Usage
import 'package:juice/testing.dart';
void main() {
test('counter increments', () async {
final bloc = CounterBloc();
final tester = BlocTester(bloc);
await tester.send(IncrementEvent());
tester.expectState((s) => s.count == 1);
tester.expectLastStatusIs<UpdatingStatus>();
await tester.dispose();
});
}
Classes
-
BlocTester<
TBloc extends JuiceBloc< TState> , TState extends BlocState> - A test utility class for testing Juice blocs.
-
JuiceEmission<
TState extends BlocState> - One status a bloc emitted during a juiceTest, with the rebuild groups it carried AT EMIT TIME — exactly what widgets' group filter saw for it.
Extensions
-
BlocTesterExtension
on JuiceBloc<
TState> - Extension to create a tester directly from a bloc.
Functions
-
isCancelingStatus(
{Object? state, Object? groups}) → Matcher - Matches a JuiceEmission whose status is a CancelingStatus.
-
isFailureStatus(
{Object? state, Object? groups, Object? error}) → Matcher -
Matches a JuiceEmission whose status is a FailureStatus;
errormatches the status's error. -
isUpdatingStatus(
{Object? state, Object? groups}) → Matcher - Matches a JuiceEmission whose status is an UpdatingStatus.
-
isWaitingStatus(
{Object? state, Object? groups}) → Matcher - Matches a JuiceEmission whose status is a WaitingStatus.
-
juiceTest<
TBloc extends JuiceBloc< (TState> , TState extends BlocState>String description, {required TBloc build(), TState seed()?, FutureOr< void> act(TBloc bloc)?, Duration? wait, int skip = 0, Object expect()?, Object errors()?, FutureOr<void> verify(TBloc bloc)?, bool allowInFlightAtClose = false, Object? tags, Object? skipTest}) → void - Declares a bloc test: build, (seed), act, then — with the bloc CLOSED — assert on exactly what it emitted.
-
runJuiceTest<
TBloc extends JuiceBloc< (TState> , TState extends BlocState>{required TBloc build(), TState seed()?, FutureOr< void> act(TBloc bloc)?, Duration? wait, int skip = 0, Object expect()?, Object errors()?, FutureOr<void> verify(TBloc bloc)?, bool allowInFlightAtClose = false}) → Future<List< JuiceEmission< >TState> > -
The body of juiceTest, callable directly (e.g. inside
testWidgets, or a test with custom setup). Returns the recorded emissions.