我在控制器类中有一个函数调用Rest Easy Web服务,该服务返回响应。我需要对该特定功能进行单元测试。
public void createOrderRequest(OrderModel orderModel, ResourceBundle resourceBundle, AspectModel aspectModel) {
try {
LOG.debug("Creating order request");
OrderReq orderRequest = new OrderReq();
orderRequest.getHeader().setDestination("http://localhost:8080/middleware/ws/services/txn/getReport");
orderRequest.setUserId("abc");
OrderResp response = (OrderResp) OrderService.getInstance().getOrderService().sendRequest(orderRequest);
if (response.getHeader().getErrorCode() == ErrorCode.SUCCESS.getErrorCode()) {
LOG.debug("Successfully send order request");
orderModel.setErrorDescription("Order successfully sent");
aspectModel.set(orderModel);
}
} catch (Exception ex) {
LOG.error("Error while sending order request: " + ex.getMessage());
}
}
我想模拟订单请求对象OrderReq
和响应对象OrderResp
。我的目的是为其他简单的Web服务请求创建模拟响应。我怎样才能实现它?
答案 0 :(得分:1)
最简单的方法是将对象创建移动到可以在测试中覆盖的帮助方法:
public void createOrderRequest(OrderModel orderModel, ResourceBundle resourceBundle, AspectModel aspectModel) {
try {
LOG.debug("Creating order request");
OrderReq orderRequest = createOrderReq();
....
}
}
/*test*/ OrderReq createOrderReq() { return new OrderReq(); }
使用包私有(默认)可见性,测试可以覆盖该方法(因为它们位于同一个包中)。
或者,您可以创建一个工厂并注入它。