개요
ReflectionTestUtils를 활용하여 Mocking된 객체의 private method가 호출됐는지 여부를 다음과 같이 테스트할 수 있다.
ReflectionTestUtils.invokeMethod(object, "privateMethodName", args);
예시
UserService
public class UserService {
public String signIn(String id, String password) {
// ...
return createJwtToken(authentication); // private 메서드 호출
}
private String createJwtToken(Authentication authentication) {
// ...
}
}
UserServiceTest
class UserServiceTest {
@Test
@DisplayName("유저 인증에 성공하여 로그인에 성공한다")
void testSuccessToSignIn() {
// given
String id = "testid";
String password = "testpwd1234";
Authentication mockAuthentication = Mockito.mock(Authentication.class);
... // 생략
// when
userService.signIn(id, password);
// then
ReflectionTestUtils.invokeMethod(userService, "createJwtToken", mockAuthentication);
}
}
참고
https://turreta.com/2017/12/27/easy-reflection-using-spring-reflectiontestutils/
'Spring > Spring' 카테고리의 다른 글
[Spring] 트랜잭션 동기화 정리 (0) | 2022.08.13 |
---|---|
[Spring] 트랜잭션 추상화 정리 (0) | 2022.08.08 |
[Spring] 스프링 DataSource 간단하게 정리 (0) | 2022.08.08 |
[Spring] 테스트 대상(@InjectMocks) Mocking & Stubbing하기 (0) | 2022.07.24 |
[Spring] 트랜잭션 AOP 동작 흐름 (0) | 2022.07.06 |