【发布时间】:2020-05-26 07:40:20
【问题描述】:
由于某些原因,我正在将 Spring Boot 版本从 2.1.6.RELEASE 升级到 2.3.0.RELEASE。
不幸的是,在此过程中我遇到了一些问题......其中一个就在这里。这是关于模拟功能,特别是假装客户端。
最奇怪的是,当我使用 spring boot 2.1.6 时,一切正常,并且 mocking 运行良好。 但是升级了版本后报错:
java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client
这意味着模拟过程不起作用,因为 feign 客户端实际上试图找到一个服务器。 是否有任何更改要应用我省略了?
为了确定,因为我发现 spring-boot-starter-test 模块将依赖 mockito 版本从 2.24.2(不确定)升级到 3.3.2(也不确定),所以我尝试将 mockito 版本降级为起源,它显示没有任何改变。所以我认为问题出在春天。
有什么办法可以解决这个问题吗?谢谢。
我有这些代码:
Test.java
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
public class Test{
@MockBean private FeignProxy feignProxy;
@Autowired private ApplicationService applicationService;
@Test
@Transactional
public void doTest(){
when(feignProxy.doProxy()).thenReturn(response);
assertDoesNotThrow(() -> {
applicationService.doService(); // exception occurs
}
}
ApplicationServiceImpl.java
@Component
public class ApplicationServiceImpl implements ApplicationService{
@Autowired private FeignProxy feignProxy;
public void doService(){
...
feignProxy.doProxy();
...
}
}
Application.java 有以下注解:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
...
简而言之:相同的代码,相同的流程,不同的版本,错误。
【问题讨论】:
标签: java spring spring-boot mockito migration