flutter_test_behavior 0.1.1 copy "flutter_test_behavior: ^0.1.1" to clipboard
flutter_test_behavior: ^0.1.1 copied to clipboard

Interacte with Flutter Widgets the same way the user does.

example/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_test_behavior/flutter_test_behavior.dart';
import 'package:mocktail/mocktail.dart';

import 'fake_events.dart';
import 'widgets.dart';

void main() {
  late FakeEvents inputEvents;
  late FakeEvents buttonEvents;

  late MaterialApp pageWidget;

  setUp(() {
    inputEvents = MockFakeEvents();
    buttonEvents = MockFakeEvents();

    pageWidget = MaterialApp(
      home: Scaffold(
        body: Container(
          child: Column(
            children: [
              InputWidget(inputEvents),
              ButtonWidget(buttonEvents),
            ],
          ),
        ),
      ),
    );
  });

  testWidgets('Should perform a tap on ButtonWidget', (tester) async {
    final button = UserEvent(tester, FormKeys.button);

    await tester.pumpWidget(pageWidget);

    await button.tap();

    await tester.pump();

    verify(() => buttonEvents.onPress()).called(1);
  });

  testWidgets('Should perform a tap and enter text on InputWidget',
      (tester) async {
    final input = UserEvent(tester, FormKeys.input);

    String typedText = 'hi';

    await tester.pumpWidget(pageWidget);

    // type() will simulate a tap on widget and
    // will trigger onChanged event the exact typed string length
    await input.type(typedText);

    await tester.pump();

    verify(() => inputEvents.onPress()).called(1);
    verify(() => inputEvents.onChanged('h')).called(1);
    verify(() => inputEvents.onChanged('hi')).called(1);
  });

  testWidgets('Should perform a tap and erase text on InputWidget',
      (tester) async {
    final input = UserEvent(tester, FormKeys.input);

    String typedText = 'hi';

    await tester.pumpWidget(pageWidget);

    // type() and erase() will simulate a tap on widget and
    // will trigger onChanged event the exact typed string length
    await input.type(typedText);
    await input.erase();

    await tester.pump();

    verify(() => inputEvents.onPress()).called(1);
    verify(() => inputEvents.onChanged('h')).called(2);
    verify(() => inputEvents.onChanged('hi')).called(1);
    verify(() => inputEvents.onChanged('')).called(1);
  });
}
1
likes
120
pub points
0%
popularity

Publisher

unverified uploader

Interacte with Flutter Widgets the same way the user does.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (LICENSE)

Dependencies

flutter, flutter_test

More

Packages that depend on flutter_test_behavior