gpt4 book ai didi

java - 如何模拟 Controller 类中定义的 Web 服务请求?

转载 作者:行者123 更新时间:2023-12-01 13:47:24 25 4
gpt4 key购买 nike

我在 Controller 类中有一个函数,它调用 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 服务请求创建模拟响应。我怎样才能实现它?

最佳答案

最简单的方法是将对象创建移动到可以在测试中重写的帮助方法中:

public void createOrderRequest(OrderModel orderModel, ResourceBundle resourceBundle, AspectModel aspectModel) {
try {
LOG.debug("Creating order request");
OrderReq orderRequest = createOrderReq();
....
}
}

/*test*/ OrderReq createOrderReq() { return new OrderReq(); }

使用包私有(private)(默认)可见性,测试可以覆盖该方法(因为它们位于同一包中)。

或者,您可以创建一个工厂并注入(inject)它。

关于java - 如何模拟 Controller 类中定义的 Web 服务请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com