Files
video/app/test/comment_tile_test.dart
2026-10-15 20:36:59 +08:00

77 lines
2.1 KiB
Dart

// CommentTile 渲染与交互 Widget 测试
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:video_app/models/comment_item.dart';
import 'package:video_app/screens/feed/widgets/comment_sheet.dart';
CommentItem _comment({String nickname = '阿花', String content = '拍得真好'}) =>
CommentItem(
commentId: 55001,
userId: 100030,
nickname: nickname,
content: content,
replyCount: 3,
createdAt: '2026-10-14 10:00:00',
);
void main() {
testWidgets('渲染昵称/时间/内容,时间紧凑显示', (tester) async {
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: CommentTile(
comment: _comment(),
onReply: () {},
onDelete: () {},
),
),
),
);
expect(find.text('阿花 · 10-14 10:00'), findsOneWidget);
expect(find.text('拍得真好'), findsOneWidget);
expect(find.text('回复'), findsOneWidget);
});
testWidgets('点击回复触发回调', (tester) async {
var replied = false;
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: CommentTile(
comment: _comment(),
onReply: () => replied = true,
onDelete: () {},
),
),
),
);
await tester.tap(find.text('回复'));
expect(replied, isTrue);
});
testWidgets('canDelete 时长按触发删除回调,不可删时无响应', (tester) async {
var deleted = 0;
Widget build(bool canDelete) => MaterialApp(
home: Scaffold(
body: CommentTile(
comment: _comment(),
canDelete: canDelete,
onReply: () {},
onDelete: () => deleted++,
),
),
);
await tester.pumpWidget(build(true));
await tester.longPress(find.text('拍得真好'));
expect(deleted, 1);
await tester.pumpWidget(build(false));
await tester.longPress(find.text('拍得真好'));
expect(deleted, 1); // 不可删,计数不变
});
}