import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pangolin_vpn/l10n/strings_en.dart'; import 'package:pangolin_vpn/screens/invite_page.dart'; import 'package:pangolin_vpn/services/invite_api.dart'; import 'package:pangolin_vpn/state/invite_provider.dart'; import '../helpers/harness.dart'; void main() { testWidgets('邀请页显示真实码 + 战绩 + TG 任务卡', (tester) async { const info = InviteInfo(code: 'ABCD2345', link: 'https://x/i/ABCD2345', invited: 3, converted: 1, earnedDays: 16, tgEnabled: true, tgJoined: false, channel: '@pangolin_app'); await tester.binding.setSurfaceSize(const Size(400, 1200)); addTearDown(() => tester.binding.setSurfaceSize(null)); await tester.pumpWidget(wrapThemed( InviteScreen(t: StringsEn()), overrides: [inviteProvider.overrideWith(() => _FakeNotifier(info))], )); await tester.pumpAndSettle(); expect(find.text('ABCD2345'), findsOneWidget); expect(find.text('Join channel'), findsOneWidget); // TG 任务卡 }); } class _FakeNotifier extends InviteNotifier { _FakeNotifier(this._v); final InviteInfo _v; @override Future build() async => _v; }