티스토리 뷰

단위 테스트 (Unit Test) 


1. Controller

@WebMvcTest(PlaceController.class)
//@AutoConfigureMockMvc - MockMvc를 Builder 없이 주입 받을 수 있다.

	@Autowired
    private MockMvc mvc;

    @MockBean
    private PlaceService placeService;
    
    @Test
    @DisplayName("홈-Place List 가져오기")
    void home() throws Exception {

        Place p1 = Place.builder().id(1).region("강남구").build();
        Place p2 = Place.builder().id(1).region("강남구").build();
        List<Place> placeList = new ArrayList<>();
        placeList.add(p1);
        placeList.add(p2);

        //given : Mock 객체가 특정 상황에서 해야하는 행위를 정의하는 메소드
        given(placeService.getPlaceList(any())).willReturn(placeList);

        //when    mvc.perform() : api 테스트 환경을 만들어줌
        ResultActions actions = mvc.perform(get("/"));

        //then    andExpect() : 빌더 구조로 되어있어 .으로 이을 수 있다.
        /*
        [ RestController일때 ]
        actions.andExpect(status().isOk())
                .andExpect(jsonPath("$.id").exists())
                .andExpect(jsonPath("$.region").exists();  */
                
        actions.andExpect(model().attribute("region","강남구"))
                .andExpect(model().attribute("places", placeList));
                .andDo(print());

        //verify(placeService).getPlaceList("강남구");
    }

 

2. Service

//1. @SpringBootTest(classes = {ItemService.class} )
//2. @ExtendWith(SpringExtension.class)
//2. @Import({ItemService.class})
//3.
@ExtendWith(MockitoExtension.class)
class ItemServiceTest {

    @Mock//@MockBean
    private ItemRepository itemRepository;

    @InjectMocks//@Autowired
    private ItemService itemService;

    @Test
    void getItem() {
    
        //given
        given(itemRepository.findById(1)).willReturn(new Item(1,"아이템1"));

        //when
        Item item = itemService.getItem(1);

        //then
        assertEquals(item.getId(),1);
        assertEquals(item.getName(),"아이템1");
    }
}

 

3. Repository

@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
class ItemRepositoryTest {

    @Autowired
    private ItemRepository itemRepository;

    @Test
    void findById() {
        Item item = itemRepository.findById(2);
        assertEquals(item.getPrice(),15000);
    }
}

 

 


통합 테스트 (Integration Test)


 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함