Предисловие
В дизайне микросервиса звонки между услугами являются нормальными. Обычно мы используем httpclient для реализации вызовов к удаленным ресурсам. Этот метод требует знания адреса услуги, адреса бизнес -интерфейса и т. Д., И вам нужно подождать, пока он не будет завершен, прежде чем вы сможете его позвонить. Это не очень хорошая вещь для интегрированной разработки. Он имеет сильную зависимость между услугами A и B. Итак, как мы его отделяем? Ответ - это структура OpenFeign, которая является частью SpringCloudy.
1 Добавьте ссылку на пакет
'org.springframework.cloud:spring-cloud-starter-openfeign',
Примечание. Если вы не ссылаетесь
DevingDentionManagement {imports {mavenbom "org.springframework.cloud:spring-cloud-зависимости: $2 Определить конфигурацию, связанную с профилем
//Configuration of default file paths sourceSets { integTest { java.srcDir file('src/test/java') resources.srcDir file('src/test/resources') }}task integTest(type: Test) { testClassesDirs = sourceSets.test.output.classesDirs classpath = SourceSets.test.runtimeclasspath}3 Определите интерфейс службы и определите псевдометод, который является методом в службе. Вам нужно знать параметры метода и его возвратное значение. Вам не нужно беспокоиться о реализации, просто насмехайте в модульном тесте.
Пакет Test.lind.javalindday.feignClientDemo; импорт org.springframework.cloud.openfeign.feignclient; импорт org.springframework.context.annotation.profile; импорт org.springframework.web.bindtation.getmaping;/*** Симуляция других сервисов. */@Profile ("! Integtest")@FeignClient (name = "serviceName") Общедоступный интерфейс MockClient {@GetMaping (path = "/balancesheet/{clientCode}") String Balancesheet (String ClientCode);}4 Роль профиля
Профиль является переменной среды. Вы активируете его через ActiveProfile в классе. При его использовании вы использовали аннотации профиля. В приведенном выше коде объект MockClient не может быть использован в среде IntegT.
5 Добавлена макетная реализация, она автоматически вводится, поэтому объявите аннотацию @Bean
Package test.lind.javalindday; импорт статический org.mockito.argumentmatchers.anystring; импорт статический org.mockito.mockito.mockito.mockito; импорт статический org.mockito.mockito.when; импорт org.spramework.nannotation.bean; org.springframework.context.annotation.configuration; import org.springframework.context.annotation.profile; import test.lind.javalindday.feignclientdemo.mockclient;@configuration@profile ("Integtest") public class -mockclient {@bean public mockclient (). макет (mockclient.class); Когда (client.balancesheet (AnyString ())) .ThenReturn ("OK"); вернуть клиент; }}6 Добавить модульные тесты, обязательно укажите переменные его среды на модульных тестах
Package Test.lind.javalindday; импорт статический org.junit.assert.assertequals; import org.junit.test; import org.junit.runner.runwith; import org.springframework.bean.factory.nanotation.autwoarired; import org.spramework.boot.treptoration.spertation.Sporttation.Sportation.Sporttation.Sporte.Spertation.Sportation.Sportation.Sportation.Sportation. org.springframework.test.context.ActiveProfiles;import org.springframework.test.context.junit4.SpringRunner;import test.lind.javaLindDay.feignClientDemo.MockClient;@RunWith(SpringRunner.class)@SpringBootTest//Specify the profile environment @ActiveProfiles("integTest")public class JavalinddayApplicationTests {@autowired MockClient MockClient; @Test public void testmockClient () {assertequals (mockclient.balanceshet ("ok"), "ok"); }}После запуска теста будет введен MockClient, и он будет использовать класс Mock Inleplection, потому что только профиль класса Mock Class в среде IntegT.
С OpenFeign сервисные звонки в службу разработки могут быть отделены в будущем!
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.