advancedTimeBy와 thenAwait 사용 예시가 궁금합니다
205
投稿した質問数 2
안녕하세요, advancedTimeBy와 thenAwait 사용 예시를 모르겠어서 문의드립니다.
강의 중 advancedTimeBy는 '특정 시간을 당겨서 앞서 나가는 것'이라 설명해주셨고,
thenAwait은 해당 시간이 빠르게 다가오는 걸로 이해하면 된다고 설명해주셨습니다.
궁금한 점은
1) 각각의 테스트가 필요한 예시를 조금만 더 자세히 들어주실 수 있으실까요? 특정 프로젝트에서 어떤 상황일 때 해당 방법이 필요한지 감이 잡히지 않습니다.
1-2) 어떤 상황에 필요한 것인지 모르다보니, advancedTimeBy와 thenAwait의 쓰임이 분명히 구분돼 있을텐데도 유사한 방식이 아닌가? 라는 생각이 듭니다. 이 부분도 예시로 설명해주실 수 있다면 함께 설명해주시면 감사하겠습니다.
回答 1
2
안녕하세요? advancedTimeBy()와 thenAwait()의 차이점에 대해서 질문 주셨는데요.
일단 결론부터 말씀드리면 두 메서드는 정말 거의 동일한 기능을 하기 때문에 실제 시간을 당긴다는 측면에서는 둘 중 어떤걸 사용해도 상관없습니다.
다만, advancedTimeBy()는 능동적으로 시간을 제어한다고 볼 수 있고, thenAwait()은 수동적으로 가상의 시간이 흘러가는 걸 기다린다는 측면에서 수동적입니다.
반드시 어떤 상황에 이걸 사용해야 한다고 딱 꼬집어서 명시되어 있는건 아닌데 일반적으로 advancedTimeBy()는 복잡한 테스트 시나리오에서 직접적으로 시간을 세밀하게 제어하고 싶을 때 사용하고, thenAwait()은 스케쥴링이 되어 있는 반복적인 작업 등에서 상태 변화를 체크하는데 사용됩니다.
advancedTimeBy() 같은 경우, 복잡한 테스트 시나리오에 적용하니 코드 가독성도 좀 떨어질 수 있지만 thenAwait() 같은 경우는 메서드 자체도 굉장히 직관적이라서 코드 가독성이 좋을테구요.
예를 들어서 10분에 한번씩 데이터를 가져와서 캐시를 업데이트 하는 로직이 있는데, 테스트 할 때 마다 10분씩 기다리면 비효율적이니까 advancedTimeBy()와 thenAwait() 중에 하나를 이용해서 시간을 당기면 될텐데요.
이때 10분에 한번 씩 데이터를 가져오는 로직이 단순하면 thenAwait()을 사용하는게 더 바람직할 테구요.
만약에 어떤 로직이 복잡한 상황을 처리하는 로직일 경우 이를 테면,
Flux
.concat(
fetchDataSource1(),
fetchDataSource2(),
fetchDataSource3()
)
이런 식으로 데이터를 여러 곳에서 fetch 해야하는 상황인데, 각 Sequence에서 fetch 하는 시간이 다를 경우 각각의 sequence 별로 데이터를 fetch하는 시간 주기를 세밀하게 당겨서 테스트 하고 싶을 때, advancedTimeBy()를 사용하는게 조금 더 적절하지 않을까 생각합니다.
근데 둘 중 어떤걸 사용해도 둘 다 시간을 당기는 것이기 때문에 테스트를 수행할 수 있을겁니다.
결국 비슷한 기능을 사용자가 선택해서 사용할 수 있도록 여러 선택지를 주었다라고 생각해 볼 수도 있는 문제인거 같네요.
질문에 대한 답변이 충분히 되셨길 바랍니다.
감사합니다.
subscription signal 에 upstream 으로 이동하는 순서
0
91
2
Webflux의 Non-Blocking 특성에 대해 문의 드립니다.
1
213
3
Downstream Mono, Flux가 subscriber인가요?
0
160
1
source.next와 source.emit의 차이에 대한 질문입니다.
0
214
2
StepVerifier를 이용한 Testing (1) - expectNoEvent 에 관해서
2
233
1
backpressure latest 전략
0
243
2
StepVerifier를 이용한 Testing (1) 의 StepVerifiter 질문
0
231
1
[Scheduler의 종류 강의] Schedulers.newParallel 메서드에 관한 질문
0
209
2
Backpressure Drop 전략에서 다시 버퍼가 채워지는 시점에 대한 질문입니다.
0
167
2
Reactor 3부의 오픈 일정에 관해서 문의드립니다!
0
173
1
inner sequence context 관련 질문
0
139
1
boundedElastic 관련 질문
1
323
1
강의자료 관련 질문드립니다.
0
250
3
newBoundedElastic 에서 queue 에 쌓이는 룰
0
215
2
import com.itvillage.utils.Logger;
0
149
1
Interceptor에서 reactor Context 유지하는 방법
0
283
2
예시코드는 webflux의 이점보단 webclient의 이점 아닌가요?
3
361
1
context의 read, write의 실행 순서
0
263
2
DROP 전략과 LATEST 전략의 차이점이 무엇인가요?
3
637
3
백프레셔 전략 관련해서
1
310
1
Backpressure Example 코드 질문드립니다
0
259
2
Backpressure 전략
0
308
2
Flux 와 Mono
0
465
1
Spring WebFlux 를 사용하기 적합한 시스템
0
804
1

