inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[워밍업 클럽 스터디 2기 - BE] (클린코드, 테스트코드) day 15 미션

김민성
0

 

출처 : 인프런 워밍업 클럽 스터디 2기 - 백엔드 클린코드, 테스트 코드(Java, Spring Boot)

Practical Testing: 실용적인 테스트 가이드

 

Layered Architecture

 

image

핵심은 관심사의 분리. 역할을 나누어 유지보수성을 늘린다.

 

Persistence Layer

테스트 방법

@Test
@DisplayName("원하는 판매상태를 가진 상품들을 조회한다.")
void findAllBySellingStatusIn() {
	// given
	Product product1 = createProduct("001", HANDMADE, SELLING, "아메리카노", 4000);
	Product product2 = createProduct("002", HANDMADE, HOLD, "카페라떼", 4500);
	Product product3 = createProduct("003", HANDMADE, STOP_SELLING, "팥빙수", 7000);

	productRepository.saveAll(List.of(product1, product2, product3));
	// when
	List<Product> products = productRepository.findAllBySellingStatusIn(List.of(SELLING, HOLD));

	// then
	assertThat(products).hasSize(2)
			.extracting("productNumber", "name", "sellingStatus")
			.containsExactlyInAnyOrder(
					tuple("001", "아메리카노", SELLING),
					tuple("002", "카페라떼", HOLD)
			);
}

 

Business Layer

테스트 방법

 

 

Presentation Layer

테스트 방법

@Test
@DisplayName("신규 주문을 등록한다.")
void createOrder() throws Exception {
	// given
	OrderCreateRequest request = OrderCreateRequest.builder()
			.productNumbers(List.of("001"))
			.build();

	// when // then
	mockMvc.perform(post("/api/v1/orders/new")
					.content(objectMapper.writeValueAsString(request))
					.contentType(MediaType.APPLICATION_JSON)
			)
			.andDo(print())
			.andExpect(status().isOk())
			.andExpect(jsonPath("$.code").value("200"))
			.andExpect(jsonPath("$.status").value("OK"))
			.andExpect(jsonPath("$.message").value("OK"));

}

 

 

백엔드 테스트코드 워밍업클럽 미션

답변 0