// 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); // 不可删,计数不变 }); }