Part 1. Spring Framework
Ch 05. 예외처리
02. Controller 테스트 작성
package com.fastcampus.programmin.dmaker.controller;
import com.fastcampus.programmin.dmaker.dto.DeveloperDto;
import com.fastcampus.programmin.dmaker.entity.Developer;
import com.fastcampus.programmin.dmaker.service.DMakerService;
import com.fastcampus.programmin.dmaker.type.DeveloperLevel;
import com.fastcampus.programmin.dmaker.type.DeveloperSkillType;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(DMakerController.class)
//Mockito랑 유사한 면이 있음, Controller와 관련된 bean들만 올려서 테스트를 진행 가능
class DMakerControllerTest {
//ctrl + shift + t를 통해 생성 및 해당 클래스의 테스트로 이동 가능
@Autowired
private MockMvc mockMvc;
@MockBean
private DMakerService dMakerService;
protected MediaType contentType =
new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(),
StandardCharsets.UTF_8);
@Test
void getAllDevelopers() throws Exception {
//given
DeveloperDto seniorBEDeveloper = DeveloperDto.builder()
.developerSkillType(DeveloperSkillType.BACK_END)
.developerLevel(DeveloperLevel.SENIOR)
.memberId("memberId")
.build();
DeveloperDto juniorFEDeveloper = DeveloperDto.builder()
.developerSkillType(DeveloperSkillType.FRONT_END)
.developerLevel(DeveloperLevel.JUNIOR)
.memberId("memberId2")
.build();
given(dMakerService.getAllEmployedDevelopers())
.willReturn(Arrays.asList(seniorBEDeveloper, juniorFEDeveloper));
//when
//then
mockMvc.perform(get("/developers").contentType(contentType))
.andExpect(status().isOk())
.andExpect(
jsonPath("$.[0].developerSkillType",
is(DeveloperSkillType.BACK_END.name())))
.andExpect(
jsonPath("$.[0].developerLevel",
is(DeveloperLevel.SENIOR.name())))
.andExpect(
jsonPath("$.[1].developerSkillType",
is(DeveloperSkillType.FRONT_END.name())))
.andExpect(
jsonPath("$.[1].developerLevel",
is(DeveloperLevel.JUNIOR.name())));
}
}
<DMakerControllerTest.java>
package com.fastcampus.programmin.dmaker.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
<JpaConfig.java>
package com.fastcampus.programmin.dmaker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
public class DmakerApplication {
public static void main(String[] args) {
SpringApplication.run(DmakerApplication.class, args);
}
}
<DmakerApplication.java>
https://bit.ly/37BpXic
'[패스트캠퍼스] Spring' 카테고리의 다른 글
패스트캠퍼스 챌린지 36일차 (0) | 2022.02.28 |
---|---|
패스트캠퍼스 챌린지 35일차 (0) | 2022.02.27 |
패스트캠퍼스 챌린지 33일차 (0) | 2022.02.25 |
패스트캠퍼스 챌린지 32일차 (0) | 2022.02.24 |
패스트캠퍼스 챌린지 31일차 (0) | 2022.02.23 |
댓글