- core/di/: service_locator, IIAPService, IAdService 생성 - IAPService/AdService: implements 인터페이스 + GetIt 위임 - main.dart: setupServiceLocator() 호출 - 기존 .instance getter 호환성 100% 유지 - test/helpers/test_setup.dart: 테스트용 서비스 로케이터 초기화
44 lines
1.4 KiB
Dart
44 lines
1.4 KiB
Dart
import 'package:asciineverdie/src/core/audio/audio_service.dart';
|
|
import 'package:asciineverdie/src/core/di/i_iap_service.dart';
|
|
import 'package:asciineverdie/src/core/di/service_locator.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:get_it/get_it.dart';
|
|
|
|
/// 위젯 테스트에서 사용하는 공통 셋업/정리 유틸리티
|
|
///
|
|
/// 싱글톤 서비스들이 테스트 간 상태를 공유하지 않도록 정리합니다.
|
|
class TestSetup {
|
|
TestSetup._();
|
|
|
|
/// SharedPreferences 모킹 설정
|
|
///
|
|
/// setUpAll에서 호출하여 SharedPreferences 의존성 제거
|
|
static void mockSharedPreferences() {
|
|
final binding = TestWidgetsFlutterBinding.ensureInitialized();
|
|
binding.defaultBinaryMessenger.setMockMethodCallHandler(
|
|
const MethodChannel('plugins.flutter.io/shared_preferences'),
|
|
(call) async {
|
|
if (call.method == 'getAll') return <String, Object>{};
|
|
return null;
|
|
},
|
|
);
|
|
}
|
|
|
|
/// 서비스 로케이터(service locator) 초기화
|
|
///
|
|
/// 테스트에서 GetIt 의존성이 필요한 경우 setUpAll에서 호출
|
|
static void ensureServiceLocator() {
|
|
if (!GetIt.instance.isRegistered<IIAPService>()) {
|
|
setupServiceLocator();
|
|
}
|
|
}
|
|
|
|
/// 모든 싱글톤 서비스 정리
|
|
///
|
|
/// tearDown에서 호출하여 타이머 및 리소스 정리
|
|
static void resetAllServices() {
|
|
AudioService.resetAll();
|
|
}
|
|
}
|