본문 바로가기

빗썸 테크코스 아카데미/1주차(Event Driven)

4일차 과제 실습

Operation

실습 시간에는 실습을 하면서, 내가 궁금했던 혹은 의아했던 것들에 대해서 블로그에 정리해보기로 정하였다.

expectSubscription()

위 두가지 테스트는 둘다 성공적으로 돌아간다. 그렇다면 .expectSubscription()을 사용하지 않아도 될까?

Reacive Streams의 흐름을 보면, Subscriber에 의해, Publisher의 subscribe Method가 실행되면, Subscription이 생성된다.

이후 Subscription에 Publisher는 data를 전달하며, subscriber는 onNext를 통해 data를 전달받기도, 이후 onComplete와 onError로 흐름을 마루리 짓기도 한다.

이 때, 이 Subscription이 생겼는가를 확인하는 것이 expectSubscription()이다.

 

assertNext() vs expectNext

expectNext의 경우

매개변수 T제네릭을 받게 되고 그 값을 sequence에 따라 흘러들어오는 데이터오 비교해 DefaultStepVerifierBuilder를 반환한다.

반면에

assertNext는 Consumer를 받는다. Consumer은 리턴값을 가지지 않는 인터페이스로 내부적으로 실패시 fail()함수를 호출해서 Error를 발생시킨다.

 

repeat()

repeat()함수가 존재한다.

보는것과 같이 new FluxRepeat를 생성해서 onAssembly에 넘겨준으로써, 기존에 실행되었던 Flux흐름을 numRepeat만큼 재실행한다.