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