--- /dev/null
+package de.juplo.demo;
+
+
+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.WebClient;
+import org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec;
+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;
+
+
+/**
+ * Unit-Test for class {@link RemoteContentService}.
+ * @author Kai Moritz
+ */
+@ExtendWith(SpringExtension.class)
+public class RemoteContentServiceTest
+{
+ RemoteContentService service;
+
+ @MockBean
+ WebClient webClient;
+ @MockBean(name = "uriSpec")
+ RequestHeadersUriSpec uriSpec;
+ @MockBean(name = "headersSpec")
+ RequestHeadersSpec headersSpec;
+ @MockBean(name = "responseSpec")
+ ResponseSpec responseSpec;
+
+
+ @BeforeEach
+ void setUp()
+ {
+ service = new RemoteContentService(webClient);
+ }
+
+
+ @Test
+ void test()
+ {
+ when(webClient.get()).thenReturn(uriSpec);
+ when(uriSpec.uri(eq("/foo"))).thenReturn(headersSpec);
+ when(headersSpec.retrieve()).thenReturn(responseSpec);
+ when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("bar"));
+
+ Mono<String> result = service.getRemoteText("/foo");
+
+ StepVerifier
+ .create(result)
+ .expectNext("bar")
+ .verifyComplete();
+ }
+}