Viết
·
96
·
Đã chỉnh sửa
1
kill9형 오매불망 테스트만 기다리고있었는데 업로드 되서 너무 좋다.
근데 외부 API 호출이 Step 안에 있는 경우 어떻게 테스트하면 좋을지 알려 줄 수 있을까?
호출이 가능한 상황과 호출이 불가능한 상황 2가지 경우에 대해서 설명부탁해
Câu trả lời 2
2
## 💀 KILL-9의 심야 응답 프로토콜 💀
$ cat late_night_response.txt
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 긴급 시스템 점검 중 ⚠️
[PROCESS STATUS]: 에필로그 작성 중... 66% 완료
[PROCESS SCHEDULE]: 새벽 2시 전에는 종료 희망
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
훌륭한 질문이군. 외부 API 호출 테스트...
하지만 지금 당장은...
$ ps aux | grep KILL-9
KILL-9 1337 99.9 에필로그_최종_마무리_중.exe
현재 시스템이 에필로그 작성 모드에 락걸려 있다.
더 이상의 리소스 할당이 불가능한 상태...
[EMERGENCY SHUTDOWN PROTOCOL]
오늘 만큼은 새벽 3시 전 강제 취침을 위해 시스템 보호 모드 진입.
해당 질문은 내일 완벽한 답변으로 처형하겠다.
아니면... 새벽 3시를 넘기면 내가 먼저 `kill -9` 당할지도 💀
$ echo "잠시만 기다려라, 진정한 시스템 지배자여..."
$ sleep_mode --activate --time "before 3AM"
1
💀 KILL-9@/bin/confusion:~$***
전사여, 네 질문에 혼란이 감지된다.
"외부 API 호출이 Step 안에 있는 경우" 라는 것이 ItemProcessor 또는 커스텀 ItemReader/Writer 등을 활용해 외부 API를 호출하는 경우를 말하는 것인가?
그리고 ***"호출이 가능한 상황과 호출이 불가능한 상황"*** 이란 말의 의미를 내가 완전히 이해하지 못했다.
조금 더 자세히 설명해달라.
- 아니면 Spring Batch Step 특성상 외부 API 호출에 제약이 생기는 특별한 경우가 있다고 생각하는가?
- 테스트 환경에서의 외부 의존성 문제를 말하는 것인가?
명확한 시나리오를 바란다. 그래야 정확한 답을 해줄 수 있다. 💀
아, 이제 이해했다. 전형적인 외부 의존성 테스트 딜레마군.
나라면 어떤 선택을 할 것인가?
E2E 테스트에서는 MockWebServer나WireMock 같은 목서버를 사용하라.
내가 질문의 의도를 제대로 이해한 게 맞는지 모르겠지만 혹시 TestContainers 같은 걸 고려 중이라 물어보는 거라면, 배치 테스트에는 굳이 필요없다. 💀
KILL-9@/bin/response:~$ echo "Acknowledging gratitude from fellow warrior"
KILL-9@/bin/warning:~$ cat survival_protocol.txt
"중간에 지루함이 엄습해도 절대 포기하지 마라.
진정한 전사는 끝까지 살아남는 자다.
모든 강의를 완주했을 때... 에필로그로 향하라."
KILL-9@/bin/epilogue:~$ ls -la /hall_of_fame/
"그곳에 너의 이름이 영원히 새겨져 있을 것이다... 💀"
KILL-9@/bin/final_message:~$ echo "[KILL-9_ETERNAL_LEGACY] 불멸의 기록 보관소"
"외부 API 호출이 Step 안에 있는 경우" 라는 것이 ItemProcessor 또는 커스텀 ItemReader/Writer 등을 활용해 외부 API를 호출하는 경우를 말하는 것인가?
맞다.
테스트 환경에서의 외부 의존성 문제를 말하는 것인가?
이거다.
조금 더 구체적으로 작성해보겠다.
Reader에서 Api 호출을 통해 데이터를 읽고
Writer에서 가공된 데이터를 API로 전달 하려고한다.
위 케이스를 어떻게 테스트하면 좋을까?
E2E 관점에서 보면 실제 API를 호출 하는게 좋은데 로컬(테스트) 환경에서 저 API를 호출하기 힘든 상황이다.
그렇다고 Mocking하는게 맞을까..? Batch 라는 주제에서 조금 벗어난 것 같긴한데 kill9형은 어떻게 하는지 궁금하다.
빠른 응답 감사한다. 치칙.