【发布时间】:2018-11-14 12:49:29
【问题描述】:
我有一个类是其他应用程序的客户端。
class StarFleetClient {
private RestTemplate restTemplate = null;
private String accessToken = null;
public StarFleetClient(String address, String username, String password) {
restTemplate = new RestTemplate();
accessToken = restTemplate.postForEntity(...);
}
public String attack() {
return restTemplate.exchange(... )
}
}
现在,我会在需要时创建此类的多个实例。每次凭据都会不同。
new StarFleetClient("address1", "user1", "pass");
其他时间
new StarFleetClient("address1", "user1", "pass");
等等……
现在,这是完美的工作,但是当我编写单元测试时会出现问题。我不想在运行测试时调用实际的星际舰队。我需要模拟RestTemplate,但在创建新实例时,我无法正确模拟。
如何为此编写测试用例?或者我怎样才能使这段代码可测试?
技术栈:Spring Boot、Mockito
【问题讨论】:
-
为什么不尝试使用
TestRestTemplate,它是RestTemplate的方便替代品,适用于集成测试。它们是容错的,并且可以选择携带基本身份验证标头。
标签: unit-testing spring-boot mockito refactoring