为什么:红线第 8 条门禁立即生效,要求 Flutter 测试命名合规;此前 155 条用例名是英文自然语言 或中文描述,合规数 0/155,属存量欠账,按"先补齐再上新功能"在本批处理。 - 25 个测试文件、155 条用例改名,按「文件 + 旧名」精确定位,每条断言命中恰好 1 次才替换 - 只改名字字面量:改动行 155 删 + 155 增,无一行不含字符串字面量(断言与用例体零改动) - 门禁:dart analyze lib test = No issues found;flutter test = 155 全过
52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:nontonki/pages/discover/widgets/cover_carousel.dart';
|
|
|
|
void main() {
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
testWidgets('should_turn_cube_and_keep_title_on_poster_when_carousel_pages', (tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Scaffold(
|
|
body: CoverCarousel(
|
|
items: [
|
|
for (final title in ['The Signal', 'City Lights', 'Vengeance'])
|
|
CoverItem(
|
|
title: title,
|
|
subtitle: 'Mock',
|
|
image: '/files/poster.png',
|
|
onOpen: _noop,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
await tester.pump();
|
|
|
|
expect(find.text('The Signal'), findsOneWidget);
|
|
expect(find.text('Mock'), findsOneWidget);
|
|
|
|
final box = tester.getRect(find.byType(CoverCarousel));
|
|
final gesture = await tester.startGesture(Offset(box.right - 40, box.center.dy));
|
|
await gesture.moveBy(const Offset(-500, 0));
|
|
await tester.pump();
|
|
|
|
final turned = tester.widgetList<Transform>(find.byType(Transform)).any(
|
|
(transform) => (transform.transform.entry(0, 0) - 1).abs() > 0.15,
|
|
);
|
|
expect(turned, isTrue);
|
|
|
|
await gesture.moveBy(const Offset(-200, 0));
|
|
await gesture.up();
|
|
await tester.pump();
|
|
await tester.pump(const Duration(milliseconds: 450));
|
|
|
|
expect(find.text('City Lights'), findsOneWidget);
|
|
expect(tester.takeException(), isNull);
|
|
});
|
|
}
|
|
|
|
void _noop() {}
|