Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MockBean
- gocd
- docker
- playbook
- JPA
- rest-api
- AWS
- Proxy
- AOP
- SpyBean
- serializer
- golang
- container
- Packer
- ci/cd
- launch-template
- DevOps
- junit
- ehcache
- persistence
- weaving
- terraform
- spring
- controlleradvice
- Deserializer
- HandlerMethodArgumentResolver
- cache
- Jpa Auditing
- LocalDateTime
- ansible
Archives
- Today
- Total
기록용 블로그
@MockBean, @SpyBean 이용 Caching 사용 시 단위 테스트 작성하기 본문
@MockBean, @SpyBean 이용 Caching 사용 시 단위 테스트 작성하기
Service단 코드에 EhCache를 적용했었다. 그때 그와 관련된 테스트를 어떻게 진행해야 할 지 고민했었는데 @MockBean과 @SpyBean 어노테이션을 이용해 Repository 코드가 몇번 호출되는지 체크해 단위 테스트를 진행할 수 있었음.
Spring Boot 1.4에서 @MockBean과 @SpyBean이 추가됨.
@MockBean은 껍데기만 그 객체의 형태를 유지하고, 내부 구현은 사용자가 when, given이나 기타 등등을 통해서 사용자가 직접 정의해주어야 함.
@SpyBean을 사용하면 given, when을 한 것 외에 실제 객체를 사용한다. 여기서는 verify를 사용하기 위해 @SpyBean을 사용함.
아래의 코드의 bestCategoryService의 findAll에 캐싱이 적용되어 있다.
findAll 메소드를 3번 호출했을 때 1번만 호출되는지에 대한 검증을 통해 캐싱이 제대로 되는지에 대한 테스트를 진행했다.
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class BestCategoryServiceTest {
@MockBean
private BestCategoryRepository bestCategoryRepository;
@SpyBean
private BestCategoryService bestCategoryService;
@Test
public void findAllTestCaching() {
BestCategory bestCategory1 = BestCategoryDto.defaultBestCategoryDto().setCategoryName("첫번째 카테고리").toEntity();
when(bestCategoryRepository.findAll()).thenReturn(Arrays.asList(bestCategory1));
bestCategoryService.findAll();
bestCategoryService.findAll();
bestCategoryService.findAll();
verify(bestCategoryService, atMost(1)).findAll();
}
}
'Back-End > Java' 카테고리의 다른 글
Java8 LocalDateTime custom Deserializer, Serializer 만들기 (0) | 2018.09.14 |
---|---|
BcryptPasswordEncoder 랜덤값 단위 테스트 작성하기 (0) | 2018.09.14 |
Spring EhCache 적용하기 (0) | 2018.09.14 |
Spring @ControllerAdvice 어노테이션을 이용한 에러 처리 (0) | 2018.09.13 |
Spring 커스텀 HandlerMethodArgumentResolver 적용하기 (0) | 2018.09.13 |
Comments