[Spring] LocalDateTime.now() 테스트하기
- 코딩/Spring
- 2022. 11. 14.
스프링 LocalDateTime.now() 테스트 방법
1. 인스턴스 생성
LocalDateTime.now()를 사용하는 메서드를 포함하는 클래스의 인스턴스를 생성합니다.
2. 가짜 객체 생성
LocalDateTime.now() 메서드를 호출하는 코드를 실행하기 전에, 현재 시간을 고정할 수 있는 Clock 객체를 생성합니다. 이때, Mockito.mock() 메서드를 이용하여 Clock 인터페이스를 가짜 객체로 생성합니다.
3. When메서드를 사용하여 시간정보 반환 설정
when() 메서드를 사용하여 Clock 인터페이스의 instant() 메서드 호출 시, 고정된 시간 정보를 반환하도록 설정합니다.
4. Clock 객체 사용
테스트 코드에서 LocalDateTime.now()를 호출하면, 고정된 시간 정보를 반환하도록 설정된 Clock 객체가 사용됩니다.
import java.time.Clock;
import java.time.LocalDateTime;
import org.junit.Test;
import org.mockito.Mockito;
public class LocalDateTimeTest {
@Test
public void testLocalDateTimeNow() {
// 현재 시간을 고정할 Clock 객체 생성
LocalDateTime fixedLocalDateTime = LocalDateTime.of(2022, 4, 6, 0, 0, 0);
Clock clock = Mockito.mock(Clock.class);
Mockito.when(clock.instant()).thenReturn(fixedLocalDateTime.toInstant(null));
// LocalDateTime.now()를 호출하는 코드 실행
LocalDateTime currentLocalDateTime = LocalDateTime.now(clock);
// 결과 검증
assert currentLocalDateTime.equals(fixedLocalDateTime);
}
}
'코딩 > Spring' 카테고리의 다른 글
[Spring] Entity에 protected 생성자를 만드는 이유(@Noargsconstructor) (0) | 2022.11.15 |
---|---|
[Spring] @RequestBody가 빈 생성자가 필요한 이유 (0) | 2022.11.14 |
[Spring] Entity vs DTO vs VO (0) | 2022.11.11 |
[Spring] JPA 생성, 변경 일시 자동생성 및 format 변경 (0) | 2022.11.11 |
[Spring] 스프링 @Transactional 작동 안할때 (0) | 2022.11.10 |