Files
KiriMemo/test/widget_test.dart
T

45 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mobile/main.dart';
/// 在导航栏内按标签定位,避免和页面标题的相同文字混淆。
Finder navLabel(String label) {
return find.descendant(
of: find.byType(NavigationBar),
matching: find.text(label),
);
}
void main() {
testWidgets('底部导航提供学习 / 管理 / 统计 / 账户四个入口', (WidgetTester tester) async {
await tester.pumpWidget(const KiriMemoApp());
expect(find.byType(NavigationBar), findsOneWidget);
expect(find.byType(NavigationDestination), findsNWidgets(4));
for (final String label in <String>['学习', '管理', '统计', '账户']) {
expect(navLabel(label), findsOneWidget);
}
});
testWidgets('默认停留在学习页,点击其它入口会切换', (WidgetTester tester) async {
await tester.pumpWidget(const KiriMemoApp());
NavigationBar bar = tester.widget<NavigationBar>(find.byType(NavigationBar));
expect(bar.selectedIndex, 0);
await tester.tap(navLabel('统计'));
await tester.pumpAndSettle();
bar = tester.widget<NavigationBar>(find.byType(NavigationBar));
expect(bar.selectedIndex, 2);
await tester.tap(navLabel('账户'));
await tester.pumpAndSettle();
bar = tester.widget<NavigationBar>(find.byType(NavigationBar));
expect(bar.selectedIndex, 3);
});
}