From 6a744debae3241e4ba954a9fa848661cadf44a88 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sat, 11 Jan 2020 16:30:26 +0100 Subject: [PATCH] Implemented a seemingly pure and clean unit-test --- .../juplo/demo/RemoteContentServiceTest.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/test/java/de/juplo/demo/RemoteContentServiceTest.java diff --git a/src/test/java/de/juplo/demo/RemoteContentServiceTest.java b/src/test/java/de/juplo/demo/RemoteContentServiceTest.java new file mode 100644 index 0000000..e458479 --- /dev/null +++ b/src/test/java/de/juplo/demo/RemoteContentServiceTest.java @@ -0,0 +1,60 @@ +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 result = service.getRemoteText("/foo"); + + StepVerifier + .create(result) + .expectNext("bar") + .verifyComplete(); + } +} -- 2.20.1