반응형

테스트코드 2

[TDD] Test 코드에서 Exception을 받고 싶을 때

간혹 테스트코드를 작성할 때, 예외를 띄우는 것을 기대하는 경우가 있을 것이다. 그런 경우는 아래와 같이 작성하면 된다. @Test void notFoundMessageCode(){ Assertions.assertThatThrownBy(()-> messageSource.getMessage("no_code", null, null)) .isInstanceOf(NoSuchMessageException.class); } - assertThatThrownBy : 예외가 throw됐을 경우 그 예외를 catch해주는 기능을 가진다. 위 코드에선, no_code라는 메시지가 저장돼있지 않아 람다식에서 NoSuchMessageException 에러를 throw해주었으며, 따라서 isInstanceOf에서 예상한 에러 ..

[Spring][TDD] MockMvc를 이용한 Controller Test

우리가 API를 개발하거나, 컨트롤러에서 view로 model을 넘겨줄 때, 또는 spring security로 로그인하여 권한이 있을 때만 service logic을 테스트할 수밖에 없는 경우가 분명히 존재한다. 이럴 땐, 직접 실행하여 테스트해보는 수밖에 없을까? 그렇지 않다. 임의의 가짜 객체 Mock을 만들어서 가상으로 테스트해보면 된다! 이 때 사용되는 방법엔 @WebMvcTest, @AutoConfigureMockMvc가 있는데, 둘의 기능은 거의 비슷하나, @AutoConfigureMockMvc가 전자와는 다르게 @Service, @Repository가 붙은 객체들도 모두 메모리에 올린다는 차이점이 존재한다. 또한, @WebMvcTest는 @SpringBootTest의 MockMvc와 충돌할..

1
반응형