// 功能:验证首期缺项与明确二期入口的不同提示,以及已开放入口行为;版本:1.0.0。 import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:user_app/ui/core/feature_entry.dart'; void main() { testWidgets('未指定阶段的缺项保留入口并提示暂未开放', (tester) async { await tester.pumpWidget(const MaterialApp(home: Scaffold(body: FeatureEntry(icon: Icons.devices, label: '设备测试')))); expect(find.text('暂未开放'), findsOneWidget); expect(find.text('即将开放'), findsNothing); await tester.tap(find.text('设备测试')); await tester.pumpAndSettle(); expect(find.text(UnavailableStage.firstPhase.message), findsOneWidget); }); testWidgets('明确二期显示即将开放而已开放功能继续执行', (tester) async { await tester.pumpWidget(const MaterialApp(home: Scaffold(body: FeatureEntry(icon: Icons.devices, label: '二期测试', stage: UnavailableStage.secondPhase)))); expect(find.text('即将开放'), findsOneWidget); await tester.tap(find.text('二期测试')); await tester.pumpAndSettle(); expect(find.text(UnavailableStage.secondPhase.message), findsOneWidget); await tester.tap(find.text('知道了')); await tester.pumpAndSettle(); var invoked = false; await tester.pumpWidget(MaterialApp(home: Scaffold(body: FeatureEntry(icon: Icons.devices, label: '可用测试', onTap: () => invoked = true)))); await tester.pumpAndSettle(); expect(find.text('暂未开放'), findsNothing); await tester.tap(find.text('可用测试')); expect(invoked, isTrue); }); }