问题描述
我需要运行一个微服务的集成测试,不需要启动依赖的微服务。
下面是我尝试过的方法(我提供了下面类的骨架)
MicroServiceOneController.java
@Autowired
MicroServiceOneservice microServiceOneserviceImpl;
@PostMapping(value = "/saveData/{userEmail}")
public void doHandleSaveData(
@PathVariable("userEmail") String userEmail) {
microServiceOneservice.saveData(userEmail);
}
MicroServiceOneserviceImpl.java
@Autowired
MicroServiceTwoProxy microServiceTwoProxy;
@Override
public void saveData(String userEmail){
DemoDTO dtoObject=microServiceTwoProxy.fetchrequiredData();
dtoObject.setUserEmail(userEmail);
// other code to persist dtoObject
}
TestOfMicroServiceOne.java:
@SpringBoottest(webEnvironment = WebEnvironment.RANDOM_PORT)
class TestOfMicroServiceOne{
@Autowired
private TestRestTemplate restTemplate;
@MockBean
MicroServiceTwoProxy microServiceTwoProxy;
@test
void test(){
Mockito.when(microServiceTwoProxy.fetchrequiredData()).thenReturn(new DemoDTO("1","data"));
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
httpentity<String> entity = new httpentity<String>(headers);
ResponseEntity<DemoDTO.class> response =
this.restTemplate.exchange("/persist/saveData/{userEmail}",HttpMethod.POST,entity,DemoDTO.class,"user@gmail.com");
assertEquals(response.getStatusCode(),HttpStatus.OK);
}
我期望在运行测试时,当 microServiceTwoProxy.fetchrequiredData()
被命中时,它应该返回测试中指定的新 DemoDTO("1","data")。
我希望这个需求在不依赖于 MicroServiceTwo 状态的情况下运行 MicroserviceOne 的测试。
但这似乎不起作用。它期望第二个微服务启动并且测试失败并显示消息 Load balancer does not have available server for client
还有其他可用的方法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)