bloc_signals_test 0.1.3
bloc_signals_test: ^0.1.3 copied to clipboard
Declarative unit testing utilities for BlocSignal and CubitSignal.
โก bloc_signals_test #
"With the rigor of Bloc and the flex and speed of Signal"
Declarative unit testing utilities for bloc_signals and CubitSignal instances.
bloc_signals_test provides blocSignalTest, a declarative helper tailored specifically for synchronous reactive signal state propagation, state de-duplication, and observer isolation.
๐ Ecosystem Packages #
| Package | Purpose | Pub.dev Link |
|---|---|---|
bloc_signals |
Core pure-Dart state containers, event registry, & VM Service telemetry | ๐ฆ pub.dev |
bloc_signals_flutter |
Flutter UI widgets (BlocSignalProvider, BlocSignalBuilder, BlocSignalListener, BlocSignalConsumer, BlocSignalSelector) |
๐ฆ pub.dev |
bloc_signals_riverpod |
Bidirectional Riverpod interop adapters (toBlocSignal(ref), toProvider()) |
๐ฆ pub.dev |
bloc_signals_hydrate |
Persistent state storage (HydratedCubitSignal, HydratedBlocSignal) |
๐ฆ pub.dev |
bloc_signals_devtools |
Dedicated Flutter DevTools extension inspector UI | ๐ฆ pub.dev |
bloc_signals_test |
Declarative unit testing helpers (blocSignalTest) |
๐ฆ pub.dev |
bloc_signals_lint |
Static analysis lints & IDE quick-fixes | ๐ฆ pub.dev |
otel_bloc_signals |
OpenTelemetry tracing observers | ๐ฆ pub.dev |
โก Key Features #
- ๐ฏ Declarative Assertions: Verify emitted states in exact order using
expect. - โฑ๏ธ Async Support: Await asynchronous event handlers or timers using
wait. - โญ๏ธ State Skipping: Skip initial emissions using
skip. - ๐จ Error Testing: Verify exceptions caught in
onErrorusingerrors. - ๐งน Automatic Cleanup: Guarantees observer restoration and
bloc.close()post-test.
๐ Getting Started #
Add bloc_signals_test to your pubspec.yaml:
dev_dependencies:
bloc_signals_test: ^0.1.0
test: ^1.24.0
๐ก Quick Examples #
1. Cubit Unit Test (blocSignalTest) #
import 'package:bloc_signals_test/bloc_signals_test.dart';
import 'package:test/test.dart';
void main() {
group('CounterCubit', () {
blocSignalTest<CounterCubit, int>(
'emits [1] when increment is called',
build: CounterCubit.new,
act: (cubit) => cubit.increment(),
expect: () => [1],
);
});
}
2. Async Event Bloc Test (wait & errors) #
blocSignalTest<DataBloc, DataState>(
'emits [DataLoading, DataLoaded] when FetchData succeeds',
build: () => DataBloc(repository: mockRepo),
act: (bloc) => bloc.add(FetchData()),
wait: const Duration(milliseconds: 100),
expect: () => [
const DataLoading(),
const DataLoaded('sample_data'),
],
);
๐ License #
MIT License. See LICENSE for details.