2013-11-28 3 views
0

응답을 반환하는 Rest Easy 웹 서비스를 호출하는 컨트롤러 클래스에 함수가 있습니다. 특정 기능을 단위 테스트해야합니다.컨트롤러 클래스에 정의 된 웹 서비스 요청을 조롱하는 방법은 무엇입니까?

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을 조롱하고 싶다. 제 의도는 나머지 쉬운 웹 서비스 요청에 대한 모의 응답을 만드는 것입니다. 그것을 어떻게 성취 할 수 있습니까? 그들은 이후 (패키지 개인 (기본값) 가시성을 사용

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

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

이 테스트는 메소드를 오버라이드 (override) 할 수 있습니다

+1

당신의 주제는 당신이 서비스를 조롱하길 원한다고 말하면 나중에 묻습니다. 실제로 무엇을하고 싶니? 그리고, 개인적인 방법을 위해 명백한 방법으로 테스트하는 것은 불가능합니다. –

+0

@Maleenc 내 편집을 참조하십시오. 사실 저는 요청 및 응답 객체를 조롱하고 단위 테스트를하고 싶습니다. –

답변

1

가장 간단한 방법은 당신이 테스트에서 오버라이드 (override) 할 수있는 도움의 방법으로 객체 생성을 이동하는 것입니다 같은 패키지에 있음).

또는 공장을 생성하고 삽입 할 수 있습니다.

+0

어떻게 공장을 만들 수 있습니까? 제 의도는 나머지 쉬운 웹 서비스 요청에 대한 모의 응답을 만드는 것입니다. –

+0

공장 사용 방법을 모르는 경우 위의 코드 예제를 참조하십시오. –

관련 문제