feat(arch): GetIt DI + IIAPService/IAdService 인터페이스 도입
- core/di/: service_locator, IIAPService, IAdService 생성 - IAPService/AdService: implements 인터페이스 + GetIt 위임 - main.dart: setupServiceLocator() 호출 - 기존 .instance getter 호환성 100% 유지 - test/helpers/test_setup.dart: 테스트용 서비스 로케이터 초기화
This commit is contained in:
@@ -4,6 +4,8 @@ import 'package:asciineverdie/src/features/new_character/new_character_screen.da
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import '../helpers/test_setup.dart';
|
||||
|
||||
/// 테스트용 MaterialApp 래퍼 (localization 포함)
|
||||
/// locale을 영어로 고정하여 테스트 텍스트와 일치시킴
|
||||
Widget _buildTestApp(Widget child) {
|
||||
@@ -16,6 +18,10 @@ Widget _buildTestApp(Widget child) {
|
||||
}
|
||||
|
||||
void main() {
|
||||
// 서비스 로케이터(service locator) 초기화
|
||||
setUpAll(() {
|
||||
TestSetup.ensureServiceLocator();
|
||||
});
|
||||
testWidgets('NewCharacterScreen renders main sections', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
_buildTestApp(
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
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';
|
||||
|
||||
/// 위젯 테스트에서 사용하는 공통 셋업/정리 유틸리티
|
||||
///
|
||||
@@ -22,6 +25,15 @@ class TestSetup {
|
||||
);
|
||||
}
|
||||
|
||||
/// 서비스 로케이터(service locator) 초기화
|
||||
///
|
||||
/// 테스트에서 GetIt 의존성이 필요한 경우 setUpAll에서 호출
|
||||
static void ensureServiceLocator() {
|
||||
if (!GetIt.instance.isRegistered<IIAPService>()) {
|
||||
setupServiceLocator();
|
||||
}
|
||||
}
|
||||
|
||||
/// 모든 싱글톤 서비스 정리
|
||||
///
|
||||
/// tearDown에서 호출하여 타이머 및 리소스 정리
|
||||
|
||||
@@ -4,9 +4,10 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'helpers/test_setup.dart';
|
||||
|
||||
void main() {
|
||||
// SharedPreferences 모킹
|
||||
// SharedPreferences 모킹 및 서비스 로케이터 초기화
|
||||
setUpAll(() {
|
||||
TestSetup.mockSharedPreferences();
|
||||
TestSetup.ensureServiceLocator();
|
||||
});
|
||||
|
||||
// 각 테스트 후 싱글톤 서비스 정리 (타이머 누수 방지)
|
||||
|
||||
Reference in New Issue
Block a user