개요
테스트 코드를 작성하다 보면 데이터베이스에 값이 잘 저장되었는지 확인하기 위해 repository에서 객체를 로드해고 테스트해야 하는 경우 객체의 필드 값을 테스트해보고 싶은 때 방법을 알아보기 위해 작성하게 되었다.
방법
아래의 코드는 stockRepository에서 저장되어 있는 모든 stocks를 조회하고 그 중 productNumber, quantity의 필드 값을 확인해 보려고 한다. 이때 extracting을 사용해 필드 값을 추출한 뒤 containsExactlyInAnyOrder를 사용해서 순서와 상관없이 두 개의 tuple을 가지고 있으면 통과한다.
List<Stock> stocks = stockRepository.findAll();
assertThat(stocks).hasSize(2)
.extracting("productNumber", "quantity")
.containsExactlyInAnyOrder(
tuple("001", 0),
tuple("002", 1)
);
만약 여러 tuple이 아니라면 아래와 같이 테스트 가능하다
assertThat(productResponse)
.extracting("productNumber", "type", "sellingStatus", "name", "price")
.contains("001", HANDMADE, SELLING, "카푸치노", 5000);
'TestCode' 카테고리의 다른 글
Mock 사용하기 (@Mock, @InjectMocks, @Spy) (0) | 2024.07.16 |
---|---|
JUnit 예외 상황 테스트 하기 (1) | 2024.07.15 |
Mockito 사용하기 (0) | 2024.07.13 |
컨트롤러 테스트하기 (0) | 2024.06.30 |
Intellij에서 HTTP 요청 보내기 (0) | 2024.06.22 |