bloc_signals_test 0.9.0 copy "bloc_signals_test: ^0.9.0" to clipboard
bloc_signals_test: ^0.9.0 copied to clipboard

Declarative unit testing utilities for BlocSignal and CubitSignal.

bloc_signals_test

โšก bloc_signals_test

"With the rigor of BLoC and the flex and speed of Signals"

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 #

The BlocSignal monorepo consists of 10 modular packages:

Package Version Description
bloc_signals pub Core pure Dart reactive state primitives bridging BLoC & Signals
bloc_signals_flutter pub Flutter UI bindings, providers, builders, listeners & selectors
bloc_signals_jaspr pub Jaspr web component integration and state binding for BlocSignal
bloc_signals_riverpod pub Bidirectional Riverpod 2/3 interop adapters & provider extensions
bloc_signals_hydrate pub Automated synchronous local state persistence & hydration
bloc_signals_replay pub Undo & redo state history tracking for CubitSignal and BlocSignal
bloc_signals_otel pub OpenTelemetry tracing and span generation for state transitions
bloc_signals_devtools pub Universal DevTools telemetry observer using dart:developer
bloc_signals_test pub Declarative unit testing utilities (blocSignalTest)
bloc_signals_lint pub Custom analyzer lint rules & automated IDE quick-fixes

โšก 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 onError using errors.
  • ๐Ÿงน 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'),
  ],
);

๐Ÿค– AI Coding Assistant Skill #

This package is supported by an official pre-packaged AI Coding Skill representing unit testing patterns, observer isolation, and synchronous assertion guidelines for BlocSignal.

If you develop with AI coding assistants (such as Claude Code, Antigravity, Gemini, Cursor, or Codex), you can load the bloc-signals skill bundle to guide your assistant's code generation and analysis.


๐Ÿ“œ License #

MIT License. See LICENSE for details.

0
likes
160
points
347
downloads

Documentation

API reference

Publisher

verified publisherstonehenge.com

Weekly Downloads

Declarative unit testing utilities for BlocSignal and CubitSignal.

Repository (GitHub)
View/report issues

Topics

#testing #unit-testing #bloc #signals

License

MIT (license)

Dependencies

bloc_signals, meta, test

More

Packages that depend on bloc_signals_test