Java/Reactive

Flux Test 중 희한한 현상

체리필터 2021. 4. 5. 09:42
반응형

github.com/wikibook/spring5-reactive/blob/master/chapter-04/src/test/java/org/rpis5/chapters/chapter_04/ReactorEssentialsTest.java

 

wikibook/spring5-reactive

『실전! 스프링 5를 활용한 리액티브 프로그래밍』 예제 코드. Contribute to wikibook/spring5-reactive development by creating an account on GitHub.

github.com

 

위에 나와 있는 usingWhenExample 내용을 테스트 도중 희한한 현상을 겪게 되어 기록.

테스트 하고자 하는 소스는 368번째 라인에 있는 Transaction 클래스이며, 해당 클래스의 insertRows(Publisher<String> rows) 메소드에서 오류가 나고 있다.

해당 클래스의 테스트 코드를 만들게 될 경우 intellij에서 아래와 같이 자동완성까지 된다.

Publisher<String> 타입의 파라미터를 넣으라고 자동완성 된다.

그런데 자동완성대로 만들고 나면 아래와 같은 오류가 보여지게 된다.

Flux<String>을 파라미터로 받는 그런 메소드를 찾을 수 없다는 오류 ㅠㅠ

처음에는 Publisher 타입을 받는 메소드를 정의해 두고, Flux 타입을 넘겨서 그런 것인가 했는데...

Flux<String> result란 변수를 디버깅 해 보니 FluxArray<String> 타입으로 반환이 된다.

reactor.core.publisher.FluxArray는 SourceProducer<T>를 구현하고 있으며

reactor.core.publisher.SourceProducer는 Publisher를 상속받고 있다.

따라서 Flux<String>은 Publisher와 같다고 봐도 되는데 왜 오류가 나는 것인지 이해 못하고 있는 상황 ㅠㅠ

 

 

반응형
1 2 3 4 5