dart_test_extensions 0.1.0 copy "dart_test_extensions: ^0.1.0" to clipboard
dart_test_extensions: ^0.1.0 copied to clipboard

Dart test extensions for cleaner, more expressive tests — ChangeNotifier state capture, mockito sugar, stream helpers, and widget test utilities.

example/example.dart

// ignore_for_file: unused_local_variable
/// Example usage of dart_test_extensions.
///
/// Import the barrel that matches your needs:
/// ```dart
/// import 'package:dart_test_extensions/dart_test_extensions.dart'; // core
/// import 'package:dart_test_extensions/mockito.dart';              // mockito sugar
/// ```
///
/// ChangeNotifier state capture:
/// ```dart
/// final states = viewModel.capture((vm) => vm.state);
/// await viewModel.load();
/// states.shouldTransition([isA<Loading>(), isA<Loaded>()]);
/// ```
///
/// Notification counting:
/// ```dart
/// final counter = viewModel.count();
/// await viewModel.doSomething();
/// counter.shouldBe(2);
/// ```
///
/// Mockito sugar:
/// ```dart
/// when(service.fetchData('id')).thenReturnAsync('result');
/// when(service.fetchStream()).thenEmit([1, 2, 3]);
/// final arg = verify(service.process(captureAny)).capturedAs<String>();
/// ```
///
/// Widget test sugar:
/// ```dart
/// testWidgets('renders', (tester) async {
///   await tester.pumpScaffold(const MyWidget());
///   find.text('Hello').shouldExist();
///   await tester.tapAndSettle(find.byType(ElevatedButton));
/// });
/// ```
///
/// Stream testing:
/// ```dart
/// final effects = await stream.collectDuring(() async {
///   await viewModel.performAction();
/// });
/// expect(effects, [MyEffect.saved]);
/// ```
library;

import 'package:dart_test_extensions/dart_test_extensions.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';

/// A minimal ChangeNotifier to demonstrate capture and count extensions.
class Counter extends ChangeNotifier {
  int _value = 0;
  int get value => _value;

  void increment() {
    _value++;
    notifyListeners();
  }
}

void main() {
  test('capture records state transitions', () {
    final counter = Counter();
    final values = counter.capture((c) => c.value);

    counter.increment();
    counter.increment();

    values.shouldEqual([1, 2]);
  });

  test('count tracks notification count', () {
    final counter = Counter();
    final notifications = counter.count();

    counter.increment();
    counter.increment();
    counter.increment();

    notifications.shouldBe(3);
  });
}
2
likes
150
points
119
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Dart test extensions for cleaner, more expressive tests — ChangeNotifier state capture, mockito sugar, stream helpers, and widget test utilities.

Repository (GitHub)
View/report issues

Topics

#testing #extensions #flutter #mockito

License

BSD-3-Clause (license)

Dependencies

flutter, flutter_test, mockito

More

Packages that depend on dart_test_extensions