전날 도메인을 완성한 후, EC2 서버에 기본적인 서비스를 jar 파일로 배포할 계획이었지만, 조원의 제안으로 Docker 파일을 사용하여 이미지를 생성하고 빌드하는 방식을 채택하기로 결정했다.
MVP 스택을 적용하면서 새롭게 구현한 항공편 검색 기능의 테스트 방법에 대해 공부했다. 테스트 방법에는 단위 테스트와 전체 테스트 두 가지가 있는데, 특히 항공편 검색 기능에 대한 단위 테스트를 진행하며 많은 지식을 얻었다.
단위 테스트는 크게 given, Mock repository response, when, then의 네 단계로 분류된다:
- given: 변수 설정을 한다.
- Mock repository response: Mockito를 사용하여 메소드 호출 시 준비된 flights 리스트를 반환하도록 설정한다. 이는 데이터베이스의 영향을 받지 않고 서비스 로직만을 테스트하게 해준다.
- when: 메소드를 호출하는 단계다.
- then: 메소드 호출 결과가 예상한 결과와 일치하는지 확인하는 과정이다.
다음은 서비스의 항공편 검색 기능에 대한 단위 테스트 코드이다:
@Test
public void testGetFlightsByConditions() {
// given
String startDate = "2023-10-01";
String endDate = "2023-10-31";
String departureCode = "ICN";
String destinationCode = "NRT";
LocalDateTime departureTime = LocalDateTime.of(2023, 10, 15, 14, 0);
LocalDateTime arrivalTime = LocalDateTime.of(2023, 10, 15, 18, 0);
Flight flight = Flight.builder()
.departureTime(departureTime)
.arrivalTime(arrivalTime)
.origin(origin)
.destination(destination)
.build();
List<Flight> flights = new ArrayList<>();
flights.add(flight);
// Mock repository response
when(flightRepository.findFlightsByConditions(startDate, endDate, departureCode, destinationCode))
.thenReturn(flights);
// when
List<FlightResponseDto> results = flightService.getFlightsByConditions(startDate, endDate, departureCode, destinationCode);
// then
assertNotNull(results);
assertFalse(results.isEmpty());
assertEquals(destinationCode, results.get(0).getDestinationCode());
}
통합테스트에 대해서도 공부를 해보았지만, 통합테스트의 경우 단위테스트와는 전혀 다른 의미의 테스트라고 판단되어 서비스가 완성되고 난 이후에 다시 알아보기로 하였다.
'Diary > TIL' 카테고리의 다른 글
2024-03-30) nginx 배포 (0) | 2024.05.12 |
---|---|
2024-03-29) 캐디 배포 시도 (0) | 2024.05.12 |
2024-03-27) 깃 설정과 commit 설정 (0) | 2024.05.10 |
2024-03-26 (0) | 2024.05.10 |
2024-04-08 (0) | 2024.04.09 |