77 lines
2.1 KiB
Dart
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); // 不可删,计数不变
|
|
});
|
|
}
|