【发布时间】:2019-11-27 05:37:31
【问题描述】:
我正在为我的遗留代码编写一个单元测试,类似于:
public class SomeClass {
public SomeResponse logToServer() {
SomeResponse response = null;
try{
RestTemplate restTemplate = new RestTemplate();
SomeRequestBean request = new SomeRequestBean();
response = restTemplate.postForEntity("http://someUrl", request, SomeResponse.class);
System.out.println(response.toString());
} catch(Exception e) {
e.printStackTrace();
}
return response;
}
}
我知道我可以将 RestTemplate 移到上面并将其注释为 @AutoWire 并将其声明为 bean 类或使用 power mockito 来模拟新实例的创建。但我不想更改这个遗留代码,而且我不惜一切代价避免使用 power Mockito,因为仅仅为了一个测试我不想向我的pom.xml 添加一个全新的依赖项。所以只是想知道有什么方法可以用来模拟这个 restTemplate 吗?
【问题讨论】:
-
这不是你的真实代码,它不会在类声明中编译。请展示一些可编译的东西,这样怪异的必须猜测哪里去了(类或方法代码)。
-
我已经编辑了代码。但是我不能分享确切的企业级代码。但它看起来像上面那样。
-
@James 基于规定的限制,那么我会说,不,可能没有其他方法可以模拟
restTemplate。主题代码与实现问题紧密耦合,这使得在没有外部依赖项/工具的情况下很难对其进行隔离测试。
标签: java junit mockito resttemplate powermockito