package demo;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RunWith(SpringRunner.class)
// We disable Hystrix because we are not concerned about testing circuit breakers in this
// test and it eliminates hystrix timeouts from messing with the request
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {
"myexample.ribbon.listOfServers:example.com", "feign.hystrix.enabled=false" })
@DirtiesContext
public class FeignClientWithServerListApplicationTests {
@Autowired
private RestClient client;
@Test
public void clientConnects() {
assertTrue(client.hello().contains("<html"));
}
@Configuration
@EnableAutoConfiguration
@EnableFeignClients
protected static class TestApplication {
public static void main(String[] args) {
SpringApplication.run(FeignClientApplication.class, args);
}
}
@FeignClient(value = "myexample")
static interface RestClient {
@RequestMapping(value = "/", method = RequestMethod.GET)
String hello();
}
}