외부 API 테스트
129
작성한 질문수 1
kill9형 오매불망 테스트만 기다리고있었는데 업로드 되서 너무 좋다.
근데 외부 API 호출이 Step 안에 있는 경우 어떻게 테스트하면 좋을지 알려 줄 수 있을까?
호출이 가능한 상황과 호출이 불가능한 상황 2가지 경우에 대해서 설명부탁해
답변 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 호출에 제약이 생기는 특별한 경우가 있다고 생각하는가?
- 테스트 환경에서의 외부 의존성 문제를 말하는 것인가?
명확한 시나리오를 바란다. 그래야 정확한 답을 해줄 수 있다. 💀
1
"외부 API 호출이 Step 안에 있는 경우" 라는 것이 ItemProcessor 또는 커스텀 ItemReader/Writer 등을 활용해 외부 API를 호출하는 경우를 말하는 것인가?
맞다.
테스트 환경에서의 외부 의존성 문제를 말하는 것인가?
이거다.
조금 더 구체적으로 작성해보겠다.
Reader에서 Api 호출을 통해 데이터를 읽고
Writer에서 가공된 데이터를 API로 전달 하려고한다.
위 케이스를 어떻게 테스트하면 좋을까?
E2E 관점에서 보면 실제 API를 호출 하는게 좋은데 로컬(테스트) 환경에서 저 API를 호출하기 힘든 상황이다.
그렇다고 Mocking하는게 맞을까..? Batch 라는 주제에서 조금 벗어난 것 같긴한데 kill9형은 어떻게 하는지 궁금하다.
빠른 응답 감사한다. 치칙.
3
아, 이제 이해했다. 전형적인 외부 의존성 테스트 딜레마군.
나라면 어떤 선택을 할 것인가?
E2E 테스트에서는 MockWebServer나WireMock 같은 목서버를 사용하라.
내가 질문의 의도를 제대로 이해한 게 맞는지 모르겠지만 혹시 TestContainers 같은 걸 고려 중이라 물어보는 거라면, 배치 테스트에는 굳이 필요없다. 💀
1
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] 불멸의 기록 보관소"
형 이번에 낸 책이랑 강의 내용에 차이가 있어?
1
45
1
형 나 몰래 책내면 모를 줄 알고?
1
37
1
강의 중복 확인 요청
0
28
1
중복내용 제보?!
1
50
2
Json 요청 처리
1
52
2
[건의][6장][작전1] deprecated 메소드
1
55
2
[예제][3장][작전2] windows 에서 마지막 예제
0
43
1
[오타][3장][작전1] 형 이건 빨리 해줘
2
110
2
[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분
1
67
1
[오타] "JobScope와 StepScope 사용 시 주의사항" 부분
1
69
2
spring boot 4 + spring batch 6 설정 변경?
1
116
2
Batch 패키지 설계 — 실무에서 Job 단위 구조
1
102
1
Spring batch를 실행해줄 스케줄러와 batch 실행 환경
1
92
1
메타테이블에 데이터가 생기지 않는 이유
1
121
2
Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의
1
118
2
@StepScope 또는 @JobScope와 JobOperator
1
154
5
Remote Partitioning
1
113
2
킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?
1
145
2
병렬 중첩
1
105
3
형 코드에 public static class 이게 뭐야 ?
1
142
3
ExitStatus
1
71
2
Batch6: jobOperator.startNextInstance() throws UnexpectedJobExecutionException
1
130
5
jdbc 커서, 페이징에서 일대다 관계 데이터 뻥튀기 조회 처리 방법 질문
1
125
2
SkipPolicy는 여러번 불릴 수 있는가?
1
58
2





