Files
lunchpick/doc/06_testing/flutter_test_failures.md
2025-11-19 16:36:39 +09:00

44 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Flutter Test Failures 2025-XX-XX
## TL;DR
- **해결 완료**: `test/integration/naver_api_integration_test.dart`의 “NaverMapParser - 동시성 및 리소스 관리 - 리소스 정리 확인”이 dispose 이후에도 성공을 반환하던 문제가 수정되었습니다.
- 수정 내용: `NaverMapParser``dispose()` 호출 뒤 `_isDisposed` 플래그를 설정하고, 이후 `parseRestaurantFromUrl`이 호출되면 `NaverMapParseException('이미 dispose된 파서입니다')`를 던지도록 변경했습니다 (`lib/data/datasources/remote/naver_map_parser.dart`).
- 단위 재현 테스트:
```bash
flutter test test/integration/naver_api_integration_test.dart \
--plain-name '리소스 정리 확인'
```
- 위 명령은 정상 통과했으며, 전체 스위트는 별도로 재실행해야 합니다.
---
## Failing Spec
| 항목 | 내용 |
| --- | --- |
| 파일 | `test/integration/naver_api_integration_test.dart` |
| 라인 | `342-355` (테스트 이름: `NaverMapParser - 동시성 및 리소스 관리 리소스 정리 확인`) |
| 기대 | `expect(() => parser.parseRestaurantFromUrl(...), throwsAnything)` |
| 실제 | `parseRestaurantFromUrl`가 `Restaurant` 인스턴스를 반환하여 `Future`가 성공적으로 완료됨 |
| 로그 | `Expected: throws anything, Actual: ... emitted <Instance of 'Restaurant'>` |
### 의심 원인
1. **샘플/시드 데이터 추가** 최근 추가된 `ManualRestaurantSamples`/`SampleDataInitializer`가 지도 파서의 동작 경로를 바꾸지는 않지만, 테스트 스텁이 더 이상 에러를 내지 않고 정상 데이터를 반환하도록 수정되었을 가능성.
2. **네이버 파서 구현 변경** `_parseWithLocalSearch` 또는 GraphQL fallback 로직이 보강되면서, 과거에는 에러가 발생하던 케이스도 이제는 성공으로 처리되는 것으로 추정.
### 해야 할 일
1. **전체 스위트 재실행**
- 이번 수정은 특정 테스트만 확인했으므로, `flutter test` 전체를 다시 돌려 다른 회귀가 없는지 확인합니다.
2. **Mock/Stubs 정리 (기존 TODO 유지)**
- `flutter analyze`가 여전히 `test/mocks/mock_naver_api_client.dart`의 override 경고를 보고하므로, 모킹 계층을 최신 구현과 맞춰 조정해야 합니다.
3. **회귀 방지**
- dispose 상태 확인 로직을 다른 리소스 보유 클래스에도 적용 가능한지 검토하고, 유사 패턴의 테스트를 추가하는 것이 좋습니다.
---
## 참고 사항
- `flutter analyze` 또한 160개의 info/warning을 내고 있으며, `test/mocks/mock_naver_api_client.dart`의 `override_on_non_overriding_member` 경고가 존재합니다. 위 이슈를 고치는 과정에서 함께 손볼 것을 권장합니다.
- 새로 추가된 샘플 데이터가 방문 이력까지 시드하므로 테스트 환경에 영향을 줄 수 있습니다. 필요 시 테스트에서 Hive 박스를 mock하거나 초기화를 제어하세요.