package de.juplo.demo;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.web.reactive.function.client.ClientResponse;
+import org.springframework.web.reactive.function.client.ExchangeFunction;
import org.springframework.web.reactive.function.client.WebClient;
-import org.springframework.web.reactive.function.client.WebClient.RequestHeadersUriSpec;
-import org.springframework.web.reactive.function.client.WebClient.ResponseSpec;
import reactor.core.publisher.Mono;
-import reactor.test.StepVerifier;
/**
RemoteContentService service;
@MockBean
- WebClient webClient;
+ ExchangeFunction exchangeFunction;
@MockBean
- RequestHeadersUriSpec uriSpec;
- @MockBean
- ResponseSpec responseSpec;
+ ClientResponse clientResponse;
@BeforeEach
void setUp()
{
- service = new RemoteContentService(webClient);
+ service =
+ new RemoteContentService(
+ WebClient
+ .builder()
+ .exchangeFunction(request -> Mono.just(clientResponse))
+ .build());
}
@Test
void test()
{
- when(webClient.get()).thenReturn(uriSpec);
- when(uriSpec.uri(eq("/foo"))).thenReturn(uriSpec);
- when(uriSpec.retrieve()).thenReturn(responseSpec);
- when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("bar"));
+ Mono<String> mono = Mono.just("bar");
+ when(clientResponse.bodyToMono(String.class)).thenReturn(mono);
Mono<String> result = service.getRemoteText("/foo");
- StepVerifier
- .create(result)
- .expectNext("bar")
- .verifyComplete();
+ assertThat(result.block()).isEqualTo("bar");
}
}