개요
테스트를 진행하며 Product코드에서는 필요 없지만 Test를 진행하기 위해 필요한 메서드가 생겼을 경우는 어떻게 해야 할까에 대한 고민을 해보았다.
본론
이에 대한 결론은 만들어도 된다 였다. 하지만 보수적으로 만들어야 한다.
기본적으로 Test를 위해 코드를 무작위로 작성하는 것은 피해야 한다.
아래의 예시를 보자
아래의 코드에서 ProductCreateRequest의 builder는 Product코드에서는 필요가 없다.
자동으로 주입되기 때문이다.
하지만 테스트를 위해 필요한 코드로 생각이 된다.
@PostMapping("/api/v1/products/new")
public ApiResponse<ProductResponse> createProduct(@Valid @RequestBody ProductCreateRequest request) {
return ApiResponse.ok(productService.createProduct(request));
}
@DisplayName("신규 상품을 등록한다.")
@Test
void createProduct() throws Exception {
// given
ProductCreateRequest request = ProductCreateRequest.builder()
.type(ProductType.HANDMADE)
.sellingStatus(ProductSellingStatus.SELLING)
.name("아메키라노")
.price(4000)
.build();
mockMvc.perform(post("/api/v1/products/new")
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().isOk());
}
테스트를 위해 Getter, 기본생성자, Builder 등은 조심스럽게 추가해 보자
'TestCode' 카테고리의 다른 글
private 메서드 테스트 (0) | 2024.07.18 |
---|---|
테스트 Spring boot 띄어지는 수 줄이기 (0) | 2024.07.18 |
테스트 팁 (0) | 2024.07.17 |
classicist vs mockist (0) | 2024.07.17 |
Mockito.verify (0) | 2024.07.16 |