모의서버(Mock server)를 이용하여 서버 to 서버에서 통신하기 #49
myrhymetree
started this conversation in
Ideas
Replies: 1 comment
-
|
확인했습니다!!!!!! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
contoroller에서 server to server test
controller에서 외부서버와 통신하는지 여부만 테스트 코드로 작성하고 싶다면 아래와 같은 방법들이 있는데요.
모의 서버 (Mock Server) 사용:
외부 서버의 테스트 환경 사용:
테스트 더블 (Test Double) 사용:
인터페이스 추상화 및 의존성 주입:
아래는 Spring Framework를 사용하는 경우의 예시 코드입니다:
이러한 방식으로 테스트 가능한 코드를 작성하고, 테스트 시에는 Mock 또는 가짜 구현체를 주입하여 외부 서버와의 통신을 대체할 수 있습니다. 이렇게 하면 통합 테스트나 단위 테스트를 수행할 때 외부 서버와의 의존성을 줄일 수 있습니다.
모의서버 구현 방법
크게 네가지 방법이 있고, 그 중 모의 서버를 이용하여 테스트하는 방법에 대해서 설명하려고 합니다.
MockServer를 구현하는 것은 테스트 중에 외부 서버의 동작을 모방하고 응답을 제어하는 중요한 작업입니다. Spring Boot를 사용하고 있다면
WireMock또는MockServer와 같은 라이브러리를 사용하여 MockServer를 구현할 수 있습니다. 아래는WireMock를 사용한 MockServer를 구현하는 간단한 예제입니다.의존성 추가:
WireMock라이브러리를 Gradle 프로젝트에 추가합니다.Gradle:
WireMock 설정:
테스트 클래스에서 WireMock 서버를 설정하고, 원하는 동작 및 응답을 정의합니다.
테스트 수행:
테스트 클래스를 실행하여 MockServer와 컨트롤러의 상호 작용을 테스트합니다. WireMock을 사용하면 외부 서버의 응답을 제어하고 테스트 시나리오를 테스트할 수 있습니다.
WireMock를 사용한 MockServer 구현은 테스트 중에 외부 서버와의 의존성을 제어하고 테스트 케이스를 작성하는 데 유용합니다. 이를 통해 테스트 중에 외부 서버에 대한 응답을 원하는 대로 제어하고, 다양한 시나리오를 시뮬레이션할 수 있습니다.
모의서버 테스트
테스트에서 성공적으로 응답을 해줬을때, 문제가 다음과 같은 json 포맷으로 올것으로 가정하고 문자열을 json으로 변환하였고, 응답상태와 json의 일부 속성이 예상하는 값과 일치하는지를 검증하였습니다.
Postman으로 Mock서버 구축하여 통신 테스트
테스트코드에서는 정상적으로 응답하는것을 확인했지만, 실제 비즈니스로직에서도 요청/응답이 원할히 이루어지는지 확인하고 싶었습니다.
그래서 다음과 같이 Postman으로 Mock서버를 구축하였는데요.
모의서버는 요청 1000회 이하만 무료버전에서 지원하기 때문에 주의가 필요합니다.
Mock서버 구현은 간단합니다.
다음과 같이 request의 example에 응답 Body에 예상되는 응답값을 json 형식으로 작성하고 저장합니다.

그런 다음 Mock Servers의 환경을 설정할 때 MockServer구현에 사용한 요청이 담긴 컬렉션을 지정하면 됩니다.

지정하면 Mock Server의 url을 카피해서 다음과 같이 요청을 보내면 정상적으로 값을 응답 받는 것을 확인할 수 있습니다.
외부 서버에 요청해야하는 작업이 있는 경우, 먼저 테스트를 해보고 싶다면 이와 같은 방법을 사용하면 좋을 것 같습니다.
참고
https://antdevhistory.tistory.com/3
Beta Was this translation helpful? Give feedback.
All reactions