티스토리 뷰
@WebMvcTest란?
SpringMvc에 관련된 것들만 불러와서 테스트 할 수 있게 해주는 어노테이션.
테스트에 필요한 것들만 불러오기 때문에 로딩하는 속도가 비교적 빨라서 테스트를 자주 실행할때 많은 도움이 되는 어노테이션입니다.
MockMvc란?
MockMvc는 Spring 애플리케이션의 웹 계층을 테스트하기 위한 목(Mocks) 테스트 지원 클래스 입니다. 이를 사용하면 실제 HTTP 요청을 보내지 않고도 컨트롤러 엔드포인트를 호출하고 해당 엔드포인트의 응답을 검증할 수 있습니다. 이는 테스트의 속도를 향상시키고 테스트 환경을 더욱 예측 가능하게 만듭니다.
오늘 테스트 할 코드는 아래 world라는 String을 리턴하는 Controller입니다.
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/hello")
public class HelloController {
@GetMapping
public String hello() {
return "world";
}
}
/api/v1/hello를 호출 했을 때 world를 리턴 하는지 확인하는 테스트 입니다.
@WebMvcTest(HelloController.class) // HelloController를 테스트
class HelloControllerTest {
@Autowired
MockMvc mockMvc;
@MockBean
PostService postService;
@Test
@WithMockUser
@DisplayName("hello test")
void name() throws Exception {
mockMvc.perform(get("/api/v1/hello")
.with(csrf()))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string("world"));
}
}
여기에서는 content().string()을 썼습니다.
WithMockUser를 사용할 때 문제점
SecurityConfiguraion에서 api를 .permitAll()로 지정했음에도 불구하고 인증 완료된 사용자라는 의미의 @WithMockUser를 사용하는 이유는?
테스트를 할때는 SecurityConfiguraion까지 빈으로 올리지는 않아서 무엇을 통과시켰는지 모른기 때문. 따라서 그냥 인증된 사용자, 안 된 사용자로 나눠서 테스트를 실행합니다.
@WithMockUser 어노테이션은 기본적으로 SecurityAutoConfiguration, SecurityFilterAutoConfiguration 를 빈으로 등록하고 커스텀으로 생성한 것을 넣지 않습니다.
'Spring > Spring Boot(스프링 부트)' 카테고리의 다른 글
SpringBoot Intellij에서 Environment Variable을 application.yml에 넣기 (0) | 2023.01.05 |
---|---|
H2를 이용해 테스트 하기 (0) | 2023.01.05 |
Swagger에서 Jwt Token으로 테스트 하기 (0) | 2022.12.21 |
Jpa에 Audit적용하기 (0) | 2022.12.15 |
SpringBoot Gradle빌드, Dockerbuild후 gitlab-ci (0) | 2022.12.13 |
- Total
- Today
- Yesterday
- Linux
- vim
- shellscript
- 도커각티슈케이스
- Sh
- docker container case
- 2017 티스토리 결산
- docker container tissue box
- docker container whale
- docker container tissue
- 도커컨테이너
- 개발자
- 도커티슈박스
- 도커티슈케이스
- 이직
- 싱가폴
- docker container
- 도커각티슈박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |