2013-11-28 66 views
0

我有一個控制器類中的函數,它調用一個Rest Easy Web服務,它將返回一個響應。我需要單元測試這個特定的功能。如何模擬在控制器類中定義的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服務請求創建模擬響應。我怎樣才能實現它?

+1

你的話題說,你想嘲笑一個服務,後來你問,你只想嘲笑兩個對象。其實你想做什麼?而且,對於以明確的方式進行測試的私有方法是不可能的。 –

+0

@Maleenc請參閱我的編輯。其實我想嘲笑請求和響應對象,並單元測試它們。 –

回答

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(); } 

使用包專用(默認)的可見性,測試可覆蓋的方法(因爲他們在同一個包中)。

或者,您可以創建一個工廠並注入它。

+0

我如何創建工廠。我的意圖是爲其他簡單的Web服務請求創建模擬響應。 –

+0

如果您不知道如何使用工廠,請使用上面的代碼示例。 –

相關問題