title: How to write integration tests with spring-cloud-netflix and feign
body: <p>I use Spring-Cloud-Netflix for communication between micro services. Let's say I have two services, Foo and Bar, and Foo consumes one of Bar's REST endpoints. I use an interface annotated with <code>@FeignClient</code>:</p>
  
  <pre><code>@FeignClient
  public interface BarClient {
    @RequestMapping(value = "/some/url", method = "POST")
    void bazzle(@RequestBody BazzleRequest);
  }
  </code></pre>
  
  <p>Then I have a service class <code>SomeService</code> in Foo, which calls the <code>BarClient</code>.</p>
  
  <pre><code>@Component
  public class SomeService {
      @Autowired
      BarClient barClient;
  
      public String doSomething() {
        try {
          barClient.bazzle(new BazzleRequest(...));
          return "so bazzle my eyes dazzle";
        } catch(FeignException e) {
          return "Not bazzle today!";
        }
  
      }
  }
  </code></pre>
  
  <p>Now, to make sure the communication between services works, I want to build a test that fires a real HTTP request against a fake Bar server, using something like WireMock. The test should make sure that feign correctly decodes the service response and reports it to <code>SomeService</code>.</p>
  
  <pre><code>public class SomeServiceIntegrationTest {
  
      @Autowired SomeService someService;
  
      @Test
      public void shouldSucceed() {
        stubFor(get(urlEqualTo("/some/url"))
          .willReturn(aResponse()
              .withStatus(204);
  
        String result = someService.doSomething();
  
        assertThat(result, is("so bazzle my eyes dazzle"));
      }
  
      @Test
      public void shouldFail() {
        stubFor(get(urlEqualTo("/some/url"))
          .willReturn(aResponse()
              .withStatus(404);
  
        String result = someService.doSomething();
  
        assertThat(result, is("Not bazzle today!"));
      }
  }
  </code></pre>
  
  <p>How can I inject such a WireMock server into eureka, so that feign is able to find it and communicate with it? What kind of annotation magic do I need?</p>