- Clock Library는 시간에 의존적인 코드를 테스트하기 위해 존재합니다.
- 시시각각 변하는 시간을 원하는 값으로 고정시켜 특수한 상황을 제어합니다.
- Clocks의 freeze()는 Elsa 에서만 접근 가능합니다.
🕰 clock은 프로덕션에서 사용합니다.
❄️ clock-frozen은 테스트 코드에서 사용합니다.
How To Use [clock-frozen] In TestCode
[EX]
@BeforeEach
void setUp() {
Elsa.freeze(purchasedAt); 📍 테스트를 위해 원하는 시간을 고정시킵니다.
member = factory.create(USER, MEMBERSHIP, purchasedAt);
}
@AfterEach
void tearDown() {
Elsa.rollback(); 📍 고정시켰던 시간을 되돌립니다.
}
TestCode
@Test
@DisplayName("When clock is frozen, Clock use FrozenClock")
void use_frozenClock(){
LocalDateTime freeze=LocalDateTime.of(2021,1,1,1,1);
Clocks.freeze(freeze);
assertThat(Clocks.getInstance()).isInstanceOf(Clocks.FrozenClock.class);
}
@Test
void freeze(){
LocalDateTime freeze=LocalDateTime.of(2021,1,1,1,1);
Clocks.freeze(freeze);
assertThat(Clocks.getInstance().getNow()).isEqualTo(freeze);
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.moimp.clocks:clocks:1.0.0'
implementation 'com.github.moimp.clocks:clocks-frozen:1.0.0'
}