test: 통합 테스트 오류 및 경고 수정
- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - TestDataGenerator 제거하고 직접 객체 생성으로 변경 - 모델 필드명 및 타입 불일치 수정 - 불필요한 Either 패턴 사용 제거 - null safety 관련 이슈 해결 수정된 파일: - test/integration/screens/company_integration_test.dart - test/integration/screens/equipment_integration_test.dart - test/integration/screens/user_integration_test.dart - test/integration/screens/login_integration_test.dart
This commit is contained in:
129
test/widget/screens/fix_widget_tests.sh
Normal file
129
test/widget/screens/fix_widget_tests.sh
Normal file
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Widget 테스트 파일들에 Provider 설정 추가하는 스크립트
|
||||
|
||||
echo "Widget 테스트 파일들에 Provider 설정을 추가합니다..."
|
||||
|
||||
# equipment_list_widget_test.dart 수정
|
||||
echo "Fixing equipment_list_widget_test.dart..."
|
||||
cat > equipment_list_widget_test_temp.dart << 'EOF'
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:superport/screens/equipment/equipment_list_redesign.dart';
|
||||
import 'package:superport/screens/equipment/controllers/equipment_list_controller.dart';
|
||||
import 'package:superport/services/equipment_service.dart';
|
||||
import 'package:superport/services/auth_service.dart';
|
||||
import 'package:superport/services/mock_data_service.dart';
|
||||
import 'package:superport/services/company_service.dart';
|
||||
import 'package:superport/services/warehouse_service.dart';
|
||||
|
||||
import '../../helpers/test_helpers.dart';
|
||||
import '../../helpers/simple_mock_services.dart';
|
||||
import '../../helpers/simple_mock_services.mocks.dart';
|
||||
import '../../helpers/mock_data_helpers.dart';
|
||||
|
||||
void main() {
|
||||
late MockEquipmentService mockEquipmentService;
|
||||
late MockAuthService mockAuthService;
|
||||
late MockMockDataService mockDataService;
|
||||
late MockCompanyService mockCompanyService;
|
||||
late MockWarehouseService mockWarehouseService;
|
||||
late GetIt getIt;
|
||||
|
||||
setUp(() {
|
||||
// GetIt 초기화
|
||||
getIt = setupTestGetIt();
|
||||
|
||||
// Mock 서비스 생성
|
||||
mockEquipmentService = MockEquipmentService();
|
||||
mockAuthService = MockAuthService();
|
||||
mockDataService = MockMockDataService();
|
||||
mockCompanyService = MockCompanyService();
|
||||
mockWarehouseService = MockWarehouseService();
|
||||
|
||||
// Mock 서비스 등록
|
||||
getIt.registerSingleton<EquipmentService>(mockEquipmentService);
|
||||
getIt.registerSingleton<AuthService>(mockAuthService);
|
||||
getIt.registerSingleton<MockDataService>(mockDataService);
|
||||
getIt.registerSingleton<CompanyService>(mockCompanyService);
|
||||
getIt.registerSingleton<WarehouseService>(mockWarehouseService);
|
||||
|
||||
// 기본 Mock 설정
|
||||
SimpleMockServiceHelpers.setupAuthServiceMock(mockAuthService, isLoggedIn: true);
|
||||
SimpleMockServiceHelpers.setupEquipmentServiceMock(mockEquipmentService);
|
||||
SimpleMockServiceHelpers.setupMockDataServiceMock(mockDataService);
|
||||
SimpleMockServiceHelpers.setupCompanyServiceMock(mockCompanyService);
|
||||
SimpleMockServiceHelpers.setupWarehouseServiceMock(mockWarehouseService);
|
||||
});
|
||||
|
||||
tearDown(() {
|
||||
getIt.reset();
|
||||
});
|
||||
|
||||
group('장비 목록 화면 Widget 테스트', () {
|
||||
testWidgets('초기 화면 렌더링 테스트', (WidgetTester tester) async {
|
||||
// Arrange
|
||||
final controller = EquipmentListController();
|
||||
|
||||
// Act
|
||||
await pumpTestWidget(
|
||||
tester,
|
||||
const EquipmentListRedesign(),
|
||||
providers: [
|
||||
ChangeNotifierProvider<EquipmentListController>.value(
|
||||
value: controller,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
await pumpAndSettleWithTimeout(tester);
|
||||
|
||||
// Assert
|
||||
expect(find.byType(TextField), findsOneWidget); // 검색 필드
|
||||
expect(find.text('새로고침'), findsOneWidget); // 새로고침 버튼
|
||||
expect(find.text('장비 추가'), findsOneWidget); // 장비 추가 버튼
|
||||
expect(find.byIcon(Icons.search), findsOneWidget); // 검색 아이콘
|
||||
});
|
||||
|
||||
testWidgets('장비 목록 로딩 및 표시 테스트', (WidgetTester tester) async {
|
||||
// Arrange
|
||||
final controller = EquipmentListController();
|
||||
final mockEquipments = MockDataHelpers.createMockEquipmentListDtoList(count: 5);
|
||||
|
||||
when(mockEquipmentService.getEquipmentsWithStatus(
|
||||
page: anyNamed('page'),
|
||||
perPage: anyNamed('perPage'),
|
||||
status: anyNamed('status'),
|
||||
companyId: anyNamed('companyId'),
|
||||
warehouseLocationId: anyNamed('warehouseLocationId'),
|
||||
)).thenAnswer((_) async => mockEquipments);
|
||||
|
||||
// Act
|
||||
await pumpTestWidget(
|
||||
tester,
|
||||
const EquipmentListRedesign(),
|
||||
providers: [
|
||||
ChangeNotifierProvider<EquipmentListController>.value(
|
||||
value: controller,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
await pumpAndSettleWithTimeout(tester);
|
||||
|
||||
// Assert
|
||||
// 각 장비가 표시되는지 확인
|
||||
for (int i = 0; i < 5; i++) {
|
||||
expect(find.text('EQ${(i + 1).toString().padLeft(3, '0')}'), findsOneWidget);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
EOF
|
||||
|
||||
mv equipment_list_widget_test_temp.dart equipment_list_widget_test.dart
|
||||
|
||||
echo "모든 widget 테스트 파일 수정 완료!"
|
||||
Reference in New Issue
Block a user