From 06862ab0908516ba9d8e6920c90dbfe746f5d29a Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Tue, 14 Jul 2020 15:19:58 +0200 Subject: [PATCH] Add test for @MockBean. Fixes gh-343. --- .../beans/FeignClientMockBeanTests.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/FeignClientMockBeanTests.java diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/FeignClientMockBeanTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/FeignClientMockBeanTests.java new file mode 100644 index 00000000..a7e01810 --- /dev/null +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/FeignClientMockBeanTests.java @@ -0,0 +1,66 @@ +package org.springframework.cloud.openfeign.beans; + +import org.junit.jupiter.api.Test; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.bind.annotation.GetMapping; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +/** + * @author Olga Maciaszek-Sharma + */ +@SpringBootTest(classes = FeignClientMockBeanTests.Config.class) +public class FeignClientMockBeanTests { + + @MockBean + private RandomClient randomClient; + + @Autowired + private TestService testService; + + @Test + public void randomClientShouldBeMocked() { + String mockMessage = "Mocked Feign Client"; + when(randomClient.getRandomString()).thenReturn(mockMessage); + + String returnedMessage = testService.testMethod(); + + assertThat(returnedMessage).isEqualTo(mockMessage); + } + + @FeignClient(value = "random-test") + protected interface RandomClient { + + @GetMapping(value = "/random-test") + String getRandomString(); + + } + + @Configuration + protected static class Config { + + @Bean + TestService testService() { + return new TestService(); + } + + } + +} + +class TestService { + + @Autowired + private FeignClientMockBeanTests.RandomClient randomClient; + + public String testMethod() { + return randomClient.getRandomString(); + } +}