我目前处于亏损状态,单元测试了一个调用其中的REST服务的方法,用于向此服务发送状态消息。休息调用的单元测试
我有这样的方法:
public void informService(String state, BusinessObject bus) {
Client client = null;
Response response = null;
try {
client = new ResteasyClientBuilder()
.establishConnectionTimeout(10L, TimeUnit.MINUTES)
.socketTimeout(10L, TimeUnit.MINUTES)
.build();
WebTarget target = client.target("my.url");
MyDTO dto = new MyDTO();
dto.state = state;
response = target.request("application/json").put(Entity.json(dto));
boolean ok = handleReturnCode(response.getStatus(), bus.getId());
if (!ok) {
throw new RuntimeException("Invalid status" + response.getStatus());
}
return ok;
} catch (Exception e) {
} finally {
try {
if (response != null) {
response.close();
}
if (client != null)
client.close();
} catch (Exception e) {
}
}
所以该方法有哪个在方法中评估了REST服务的调用。我怎样才能测试这种行为?
这真是丑陋的代码我必须说。要测试这个,你可能想看看PowerMock,它可以帮助你 –
该方法不遵循SOLID原则。将代码拆分为resposabilities。不要在方法中构建客户端,将其作为参数接收或使用工厂,这样您就可以嘲笑它并仅测试内部逻辑。单元测试是关于测试方法/类逻辑,而不是与其他类的集成。 –