gpt4 book ai didi

java - 使用 WireMock 和 Eureka 的 Spring Boot 集成测试失败,返回 "No instances available"

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:08 25 4
gpt4 key购买 nike

在为使用 RestTemplate(和后台功能区)和 Eureka 解决服务 B 依赖项的 Spring Boot 应用程序(服务 A)编写集成测试时,调用服务时出现“无可用实例”异常A.

我尝试通过 WireMock 模拟服务 B,但我什至没有访问 WireMock 服务器。似乎 RestTemplate 试图从 Eureka 获取服务实例,这在我的测试中没有运行。它通过属性禁用。

服务 A 调用服务 B。服务发现是通过 RestTemplate、Ribbon 和 Eureka 完成的。

有人有包含 Spring、Eureka 和 WireMock 的工作示例吗?

最佳答案

我昨天遇到了同样的问题,为了完整起见,这里是我的解决方案:

这是我在 src/main/java/.../config 下的“实时”配置:

//the regular configuration not active with test profile
@Configuration
@Profile("!test")
public class WebConfig {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
//you can use your regular rest template here.
//This one adds a X-TRACE-ID header from the MDC to the call.
return TraceableRestTemplate.create();
}
}

我将此配置添加到测试文件夹src/main/test/java/.../config:

//the test configuration
@Configuration
@Profile("test")
public class WebConfig {
@Bean
RestTemplate restTemplate() {
return TraceableRestTemplate.create();
}
}

在测试用例中,我激活了配置文件test:

 //...
@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ServerCallTest {
@Autowired
private IBusiness biz;

@Autowired
private RestTemplate restTemplate;

private ClientHttpRequestFactory originalClientHttpRequestFactory;

@Before
public void setUp() {
originalClientHttpRequestFactory = restTemplate.getRequestFactory();
}

@After
public void tearDown() {
restTemplate.setRequestFactory(originalClientHttpRequestFactory);
}

@Test
public void fetchAllEntries() throws BookListException {
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);

mockServer
.andExpect(method(HttpMethod.GET))
.andExpect(header("Accept", "application/json"))
.andExpect(requestTo(endsWith("/list/entries/")))
.andRespond(withSuccess("your-payload-here", MediaType.APPLICATION_JSON));

MyData data = biz.getData();

//do your asserts
}
}

关于java - 使用 WireMock 和 Eureka 的 Spring Boot 集成测试失败,返回 "No instances available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com