[Spring] LocalDateTime.now() 테스트하기

    스프링 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);
      }
    
    }

    댓글

    Designed by JB FACTORY