[1단계] 테스트 코드 파일 생성
: 테스트 코드를 작성할 클래스의 이름 위에 마우스 커서를 놓고 클릭한 다음 Window - Alt + Enter, Mac - command+N - Test클릭 시 Test코드 파일이 자동 생성됨
[2단계] 테스트 코드 작성
@SpringBootTest // 테스트용 애플리케이션 컨텍스트 생성
@AutoConfigureMockMvc // MockMvc 생성
class TestController{
@Autowired
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@Autowired
private MemberRepository memeberRepository;
@BeforeEach
public void mockMvcSetUp(){
this.mockMvc = MockMvcBuilders.webAppContextSetUp(context); // MockMvc 실행
}
@AfterEach
public void cleanUp(){
memberRepository.deleteAll(); // 멤버 테이블 데이터 삭제
}
}
1) @SpringBootTest
: 메인 애플리케이션 클래스에 추가하는 애너테이션인 @SpringBootApplication이 있는 클래스를 찾고, 그 클래스에 포함되어 있는 빈을 찾은 다음 테스트용 애플리케이션 컨텍스트를 만듦
2. @AutoConfigureMockMvc
: MockMvc를 생성하고 자동으로 구성하는 애너테이션
* MockMvc : 애플리케이션을 서버에 배포하지 않고도 테스트용 MVC 환경을 만들어 요청 및 전송, 응답 기능응ㄹ 제공하는 유틸리티 클래스
[3단계] 테스트 실행 코드 작성
@SpringBootTest
@AutoConfigureMockMvc
class TestController{
...생략...
@DisplayName("getAllMembers : 아티클 조회에 성공한다.")
@Test
public void getAllMembers() throw Exception{
// given
final String url = "/test";
Member savedMember = memberRepository.save(new Member(1L, "홍길동");
// when
final ResultActions result = mockMvc.perform(get(url) // (1)
.accept(MediaType.APPLICATION_JSON); // (2)
// then
result
.andExcept(status().isOK()) // (3)
// (4)
.andExcept(jsonPath("$[0].id").value(savedMember.getId()))
.andExcept(jsonPath("$[0].name).value(savedMember.getName()));
}
}
1) perform()
: 요청을 전송하는 역할
ResultActions 객체를 받으며, ResultActions 객체는 반환값을 검증하고 확인하는 andExpect() 메서드를 제공
2) accept()
: 요청을 보낼 때 무슨 타입으로 응답을 받을지 결정
3) andExpect()
: 응답을 검증하는 역할
: HTTP 주요 응답 코드로 출력
4) jsonPath("$[0].$필드명)
: JSON 응답값의 값을 가져오는 역할
'학습 기록 > 스프링 부트3 백엔드 개발자 되기[자바편]' 카테고리의 다른 글
[05장.2] ORM(Object-relation mapping) (0) | 2023.09.01 |
---|---|
[05장.1] 1. 데이터베이스 관리자, DBMS (0) | 2023.09.01 |
[04장.2] 1. JUnit, AssertJ, 테스트 코드 애너테이션 (0) | 2023.08.31 |
[04장.1] 테스트 코드 개념 (0) | 2023.08.30 |
[03장.3] 스프링 부트 요청-응답 과정 한 방에 이해하기 (0) | 2023.08.29 |