Skip to content

Instantly share code, notes, and snippets.

@yuki2021
Created March 22, 2023 07:08
Show Gist options
  • Save yuki2021/64097d437399f8ce45d01da1247df5ae to your computer and use it in GitHub Desktop.
Save yuki2021/64097d437399f8ce45d01da1247df5ae to your computer and use it in GitHub Desktop.
FlutterのWidgetテストでボタンがタップできるか確認する。
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
// コールバックをモック化
class MockOnPressedCallback extends Mock {
void call();
}
void main() {
late Widget testWidget;
late MockOnPressedCallback mockOnPressedCallback;
// 読み込み時に実行
setUp(() {
// コールバックをセットアップ
mockOnPressedCallback = MockOnPressedCallback();
testWidget = MaterialApp(
home: Scaffold(
body: ElevatedButton(
onPressed: mockOnPressedCallback,
child: const Text('ボタン'),
),
),
);
});
// 閉じる時に実行
tearDown(() {});
group('button', () {
// ボタンをタップした時に処理が動くか確認
testWidgets('ボタンをタップした時に処理が動くか確認', (WidgetTester tester) async {
// testWidgetを読み込む
await tester.pumpWidget(testWidget);
await tester.pumpAndSettle();
// ボタンがタップできるか確認
await tester.tap(find.byType(ElevatedButton));
await tester.pumpAndSettle();
// コールバックが呼ばれているか確認
verify(mockOnPressedCallback.call()).called(1);
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment