아아 오늘은 Postman을 이용하여 MockServer 만들기를 simple&easy하게 소개하겠습니다
오늘의 실습을 위해 간단한 api를 만들어보았어요.
아주아주 단순한 @GET 하나, @DELETE 하나랍니다.
{
"id": 1
}
200 OK
{
"id": 1,
"name": "Example Resource"
}
{
"id": 1,
}
204 No Content
아주 간단하죠? 이걸로 Mock Server를 만들어보도록 할게요!
API 명세가 있으신 여러분, Postman을 켜세요!
Workspace에 들어가면 다음과 같이 보일 텐데요.
여기서 Mock Servers를 클릭해서 Create Mock Server 클릭 !
본격적으로 MockServer를 만들어봅시다.
(만약 Mock Servers가 보이지 않는다면 하단 버튼(초록 네모)을 눌러보면 보입니다!)
다음과 같이 Mock Server에 들어갈 Request들의 정보들을 적어준 후,
Mock Server 세팅을 해주면 끝 ! Create Mock Server를 해줍시다 !
💡 Save the mock server URL as an new environment variable
이 부분을 체크해주면, 생성한 mock server의 긴 url을 postman 내의 환경변수로 저장해주어요.
짜잔 url이라는 이름으로 변수가 만들어졌네요!
이 변수는 {{url}}
와 같은 형태로 사용이 가능합니다.
Mock Server를 만든 뒤, 왼쪽 메뉴 중 Collections를 눌러보세요.
다음과 같이 Collection이 만들어져 있답니다 (짝짝)
api가 만들어져있고, e.g.
가 붙어있는 부분이 해당 api의 예시입니다.
Params, Authorization, Headers 등의 조건들을 다르게 하여 예시를 계속 추가할 수 있어요.
본격적으로 example을 만들기 위해, 우선 e.g.
가 붙어있는 예제를 편집해볼게요.
상단의 Params, Headers, Body에는 Request에 관한 정보,
하단의 Body, Headers에는 Response에 관한 정보를 적어줘요.
(저는 하단의 Body에 Json 형태로 받을 응답 예시를 적어주었어요!)
Try를 눌러 API를 호출했을 때 원하는 응답값이 잘 나온다면,
잊지 말고 변경 내역을 Save 해주세요 :)
저장을 하고 Mock Server의 View Collection Docs를 눌러보면,
해당 Example이 추가된 Mock Server 문서를 확인해볼 수 있어요.
만약, 새로운 조건 혹은 새로운 응답값, 또는 실패의 경우에 대해서도 example을 추가하고 싶다면,
Add example을 해주면 됩니다. (간단하죵!?)
만들어진 Mock Server를 이용해서, Android 테스트에 적용해볼게요!
// HttpClient ( Retrofit2라면 Retrofit.Builder() )
val api = DefaultApi(
// BaseUrl에 Mock Server Url 전달
MOCK_SERVER_URL, null, null
)
// api 호출
val response = api.resourceIdGet(1)
val actual = response.body()
val expected = ResponseModel(1, "Example Resource")
assertEquals(expected, actual)
저는 Ktor
를 활용해 API를 테스트해보았는데요!
(제 이전 게시글을 보셨다면.. 눈치채셨을 수 있지만.. 호출하는 함수들이 code generator를 활용해 만들어진 코드들이므로.. 각 함수의 내부 코드는 저도 이해하지 못해서.. 공개하지 않을게욥... ㅠㅠ)_
여러분의 RetrofitBuilder, 혹은 HttpClient 등 서버 통신을 위한 클래스를 만들 때, BaseUrl에 mock server URL을 넘겨주면 Mock server와 통신이 가능해집니다.
.. 끗 !
https://devvkkid.tistory.com/219#toc-%E2%9C%8D%EF%B8%8F%20Mock%20Server%20%EB%A7%8C%EB%93%A4%EA%B8%B0
https://velog.io/@whytili/Postman-Mock-Server
https://velog.io/@jeongminji4490/Android-Postman%EC%9C%BC%EB%A1%9C-Mock-Server-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%84%9C-API-%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EA%B8%B0