@SpringBootTest
@Transactional
class QuestionPostServiceImplTest {
@Autowired
QuestionPostServiceImpl questionPostService;
@Autowired
QuestionPostRepository questionPostRepository;
@Autowired
UserRepository userRepository;
@MockBean
UserAuditorAware userAuditorAware;
@Test
void create() {
User user = User.builder()
.nickname("guestUser")
.email("guest@gmail.com")
.password("testPassword12")
.build();
userRepository.save(user);
Mockito.when(userAuditorAware.getCurrentAuditor()).thenReturn(Optional.of(user));
Long questionPostId = questionPostService.createQuestionPost(new QuestionPostRegisterCommand("내용", null));
QuestionPost questionPost = questionPostRepository.findById(questionPostId).get();
System.out.println("questionPost.getAuthor() = " + questionPost.getAuthor());
}
}
@MockBean
이용하여 EntityListener를 mock 처리할 수 있습니다.
- 등록한 user 객체를 반환하게 mock 처리하여, Security와 무관하게 테스트가 수행됩니다.
- 시험삼아 Review에도
@CreatedBy
방식 적용하고, ReviewServiceImpl 테스트를 위 방식으로 수행해 봤는데, user 등록에 성공했습니다.