2016-09-19 8 views
7

У меня есть класс, который использует клиент Feign. Раньше я использовал Mockito и дал сохраненный ответ для каждого вызова метода в клиенте Feign. Теперь я хочу использовать WireMock, чтобы я мог видеть, что мой код правильно обрабатывает разные коды ответов. Как мне это сделать? Я не могу понять, как подключить мой клиент Feign в тесте и подключить его, чтобы он использовал Wiremock вместо URL-адреса, который я установил в моем файле application.yml. Любые указатели будут очень благодарны.Как использовать WireMock на клиенте Feign в приложении Spring Boot?

ответ

3

Может быть, вы хотите посмотреть на этот проект https://github.com/ePages-de/restdocs-wiremock

Это поможет вам создавать и публиковать wiremock фрагменты в своих весенних тестах Mvc (с помощью пружинного покоя документы).

И наконец, вы можете использовать эти фрагменты, чтобы запустить сервер проводной связи для обслуживания этих записанных запросов в вашем тесте.

Если вы уклонились от этого интегрированного решения, вы могли бы просто использовать правило JUnit wiremock, чтобы запустить ваш сервер для подключения к сети во время теста. http://wiremock.org/docs/junit-rule/

Вот тестовый образец, который использует динамический порт wiremock и конфигурирует ленту, чтобы использовать этот порт: (вы используете симулировать и ленточку?)

@WebAppConfiguration 
    @RunWith(SpringRunner.class) 
    @SpringBootTest() 
    @ActiveProfiles({"test","wiremock"}) 
    public class ServiceClientIntegrationTest { 

     @Autowired //this is the FeignClient service interface 
     public ServiceClient serviceClient; 

     @ClassRule 
     public static WireMockRule WIREMOCK = new WireMockRule(
       wireMockConfig().fileSource(new ClasspathFileSource("path/to/wiremock/snipptes")).dynamicPort()); 

     @Test 
     public void createSome() { 
      ServiceClient.Some t = serviceClient.someOperation(new Some("some")); 
      assertTrue(t.getId() > 0); 
     } 

//using dynamic ports requires to configure the ribbon server list accordingly 
     @Profile("wiremock") 
     @Configuration 
     public static class TestConfiguration { 

      @Bean 
      public ServerList<Server> ribbonServerList() { 
       return new StaticServerList<>(new Server("localhost", WIREMOCK.port())); 
      } 
     } 
    } 
+0

Спасибо за ответы! Я не использую ленту - только симулирую. Я использую '@ FeignClient' с' url = externalApiUrl'. Как я могу вместо этого ввести вместо этого URL-адрес проводника? – L42

+0

wiremock фактически запускает сервер, поэтому просто убедитесь, что FeignClient указывает на «localhost: WIREMOCK.port». Я не уверен, что URL-адрес может указывать на свойство конфигурации. Кажется, он не поддерживает весенние выражения. В аналогичном вопросе, чтобы иметь динамический симулирующий url, принятый ответ предлагает использовать ленту и механизм конфигурации, как используется вышеприведенным тестом. http://stackoverflow.com/a/29278126/5371736 –

+0

После долгих боев с весенними версиями, я думаю, что я ближе. Однако мой autwired feign клиент получает значение «null». Вы знаете, почему это может быть? Мой текущий план состоит в том, чтобы попытаться установить URL-адрес wiremock как свойство в @SpringBootTest, так что клиент feign (если не null) перейдет к wiremock. – L42

 Смежные вопросы

  • Нет связанных вопросов^_^