fix(test): widget_test 타이머 이슈 수정

- TestSetup 헬퍼 사용으로 SharedPreferences 모킹 통합
- AudioService 타이머 완료를 위한 1초 pump 추가
- tearDown에서 싱글톤 서비스 정리로 타이머 누수 방지
This commit is contained in:
JiWoong Sul
2026-01-21 18:43:26 +09:00
parent 3be9d346dd
commit e37a2ddfa8

View File

@@ -1,25 +1,27 @@
import 'package:asciineverdie/src/app.dart'; import 'package:asciineverdie/src/app.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'helpers/test_setup.dart';
void main() { void main() {
// SharedPreferences 모킹 // SharedPreferences 모킹
setUpAll(() { setUpAll(() {
TestWidgetsFlutterBinding.ensureInitialized(); TestSetup.mockSharedPreferences();
const MethodChannel( });
'plugins.flutter.io/shared_preferences',
).setMockMethodCallHandler((call) async { // 각 테스트 후 싱글톤 서비스 정리 (타이머 누수 방지)
if (call.method == 'getAll') return <String, Object>{}; tearDown(() {
return null; TestSetup.resetAllServices();
});
}); });
testWidgets('App launches and shows splash screen', (tester) async { testWidgets('App launches and shows splash screen', (tester) async {
await tester.pumpWidget(const AskiiNeverDieApp()); await tester.pumpWidget(const AskiiNeverDieApp());
// 앱 시작 시 스플래시 화면이 표시되는지 확인 // AudioService 초기화 타이머들이 완료될 시간 제공
// (비동기 세이브 확인 동안 스플래시 표시) // - init() 내 Future.delayed 200ms (line 130)
await tester.pump(); // - _initSfxPools() 내 Future.delayed 200ms (line 201)
// - 재시도 로직의 추가 지연 가능성
await tester.pump(const Duration(seconds: 1));
// 앱이 정상적으로 렌더링되는지 확인 (크래시 없음) // 앱이 정상적으로 렌더링되는지 확인 (크래시 없음)
expect(find.byType(AskiiNeverDieApp), findsOneWidget); expect(find.byType(AskiiNeverDieApp), findsOneWidget);