Mock 반환값 질문
194
작성한 질문수 13
프론트랑 협업 하실 때, 서비스 로직을 먼저 만드는게 아닌 반환값을 먼저 준다고 하셨는데(?) 예를 들어 어떻게 주시는지 궁금합니다. 하드코딩으로 그냥 데이터를 임의로 입력해주시는건지 예시를 보여주시면 감사하겠습니다 !
컨트롤러, 서비스, 레포지토리에서 어떤식으로 진행되는지 궁금합니다.
답변 2
1
안녕하세요, Doobie 님!
하드코딩하여 데이터를 넣어준다고 보시면 됩니다 ㅎㅎ
FE 에서도 직접 API를 호출하면서 이해하고 개발하는 것이 가장 효율적이기도 해서요.
상호 간 스펙 논의를 하고, 여러 케이스를 정의하고, 대표적인 케이스 한두가지를 하드코딩해서 빠르게 제공합니다.
(물론 API 문서만 제공하고 개발하는 경우도 많습니다. 항상 그런 것은 아니고, 시간이 어느정도 보장될 때 합니다.)
Controller
요청과 응답 스펙이 정의되었다는 가정 하이니, 관련 DTO를 만듭니다. 이 부분은 코드 양이 많지 않으니 바로 개발하는 편에 속합니다.
시간이 허락한다면 Controller 테스트도 같이 작성하면 좋겠네요.
Service
Service에서 특정 케이스에 맞는 가짜 데이터를 하드코딩합니다.
정확하게, 자세히 다 만들 필요는 없고, 그저 API의 정상 동작만을 제공하는 것을 목표로 합니다.
Repository
이 부분은 아직 개발 전입니다.
저는 요렇게 해서 개발 서버에 배포하고, 그 이후는 FE, BE가 각자 병렬로 개발한 뒤에 맞춰가는 형태로 진행하고 있습니다.
위에서 언급한 대로 API 문서와 함께 제공하는 것이 가장 좋은 방법입니다.
정답은 아니니, 참고만 해주세요!
감사합니다 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
Doobie님께서 질문주신 Mock 반환값을 먼저 주는 방법에 대해 설명드리겠습니다.
프론트엔드와의 협업 시, 백엔드 개발자가 서비스를 구현하기 전에 프론트엔드가 개발을 진행할 수 있도록 임시로 Mock 데이터를 반환할 수 있습니다. 이는 주로 초기 개발 단계에서 빠른 기능 개발을 위해 사용되며 하드코딩된 예제 데이터를 사용하게 됩니다.
예시:
컨트롤러
@RestController
@RequestMapping("/api")
public class SampleController {
@GetMapping("/example")
public ResponseEntity<Map<String, String>> getExample() {
// 하드코딩된 데이터 반환 (example endpoint)
Map<String, String> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("message", "This is a mock response");
return ResponseEntity.ok(mockResponse);
}
}
서비스
서비스 레이어는 주로 비즈니스 로직이 들어가지만 초기 단계에서는 필요 없다면 생략 가능합니다. 직접적으로 컨트롤러에서 Mock 데이터를 반환하도록 구성하기도 합니다. 필요할 경우 간단하게 인터페이스만 정의해 놓을 수 있습니다.
레포지토리
레포지토리 또한 데이터베이스 연동이 필요한 경우가 아니라면 초기 Mock 데이터라면 미리 정의해 놓지 않아도 됩니다.
이와 같은 방식으로 프론트엔드 개발자에게 예상되는 API 형태와 반환값을 제공하여 개발을 진행할 수 있게 도와줍니다. 실제 서비스 로직이 완성되면 Mock 값을 실제 비즈니스 로직으로 대체하면 됩니다.
더 자세한 예제가 필요하시다면, Spring Boot의 테스트에서 사용하는 다양한 Mocking 라이브러리들, 예를 들어 Mockito 등을 활용하여 좀 더 유연한 Mock 객체를 생성하는 방법도 학습해 보시기 바랍니다. Spring Boot Reference Documentation에서 테스트와 관련된 정보를 확인하실 수 있습니다.
private 상수 테스트 관련 질문
0
87
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
128
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
163
2
테스트 문서화 질문입니다
0
107
2
단위테스트 질문이 있습니다
0
96
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
106
2
ERD 가장자리에 있는 도메인 테스트 질문
0
90
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
136
2
OrderCreateRequest DTO에 대해서 궁금한점
0
104
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
157
2
계층 관련 질문이 있습니다.
0
140
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
124
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
135
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
235
2
Service+Repository 통합테스트 관련 질문입니다.
0
151
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
186
2
test 용 .yml
0
91
2
throws Exception
0
81
2
카페키오스크 클래스 문의 ,,
0
90
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
176
2
테스트 코드에서 필요한 생성자
0
139
1
tearDown 순서
0
116
2
@Builder 생성자 private
0
137
2
@DisplayName gradle / intellJ
0
94
2





