2016-09-23 2 views
1

테스트 할 흐름이 있습니다. 흐름에는 HTTP 인바운드 커넥터가 있으며 흐름 자체는 RESTful 서비스로 작동합니다.MUnit Mule 테스트 용 HTTP URL 매개 변수 설정

흐름에는 몇 가지 URL 매개 변수가 설정되어 있어야하며 표준 표기법 인 #[message.inboundProperties.'http.query.params'.test]을 사용하여 전체적으로 이러한 매개 변수에 액세스합니다.

MUnit을 사용하여이 흐름을 테스트하고 싶습니다. 흐름에 대해 기본 MUnit 테스트를 생성하면 MUnit은 원래 플로우를 호출하기 위해 flow-ref를 작성합니다. 그러나 흐름이 HTTP에 의해 호출 될 것으로 예상하고 URL 매개 변수가 설정되기를 기대하기 때문에이 테스트를 즉시 실행하는 것은 실패합니다.

여기가 지금입니다. 흐름을 정상적으로 처리 할 수 ​​있도록 flow-ref를 호출하기 전에 이러한 변수를 설정하고 싶습니다. 하나는 다양한 속성을 수동으로 MessagePropertyMapContext를 인스턴스화하고 flow-ref 구성 요소를 교체 http.query.params 변수

  • 에 할당
  • 을 설정할 수 있습니다 munit:set 구성 요소를 사용하여

    • :

      나는 몇 가지 시도 HTTP 구성 요소를 사용하고 실제 HTTP 메시지로 흐름을 호출하는 경우

    이 모든 것이 제대로 작동하지 않는 것 같습니다.

    변수 설정은 항상 실패한 것으로 보이며 변수에 액세스하려고하면 NullPointerException이됩니다.

    뮬은 시험을 위해 임의로 포트를 할당하므로 런타임시이 포트에 액세스 할 수없는 것 때문에 HTTP 구성 요소를 사용하여 플로를 호출하면 작동하지 않습니다. 따라서 끝점을 호출 할 방법이 없습니다.

    비슷한 질문이 herehere인데 다른 곳에서 보았지만 도움이되지 않습니다.

    그래서 기본적인 질문입니다. MUnit 테스트에서 테스트 할 때 흐름에 의해 액세스 할 수있는 URL 매개 변수를 설정하려면 어떻게해야합니까? 대신 여기에서 달성하려는 목표를 달성하는 더 좋은 방법이 있습니까?

    감사합니다.

  • 답변

    0

    글쎄, 당신이 충분히 열심히 보면 뮬 문서가 답을 얻습니다;) 대답은 바로 here입니다. ,

    <munit:set payload="#['']" doc:name="Set HTTP query params"> 
        <munit:inbound-properties> 
         <munit:inbound-property key="http.query.params" value="#[['transactionId': 'x873h3dj']]"/> 
        </munit:inbound-properties> 
    </munit:set> 
    

    이이 매개 변수 쌍 transactionId: x873h3dj를 만듭니다

    당신은 (이 구성 요소에 대한 뮬 팔레트에서 "설정 메시지"로 검색)하여 MUNIT 테스트 흐름의 시작 부분에 munit:set 구성 요소를 추가 할 필요가 그런 다음 필요에 따라 코드에서 액세스 할 수 있습니다. 당신은 정상 MEL 구문에 따라 다음과 같은 구조를 확장하여 더 많은 매개 변수를 추가 할 수 있습니다

    #[['key1':'val1', 'key2': 'val2', 'key3': 'val3']] 
    
    3

    @TroyS는 다음과 같은 코드를 시도 할 수 있습니다. 그것은 나를 위해 일했습니다.

    <munit:set payload="#['']" doc:name="Set Message url_key:payload_1"> 
         <munit:inbound-properties> 
          <munit:inbound-property key="http.query.params" value="#[['url_key':'payload_1']]"/> 
         </munit:inbound-properties> 
        </munit:set>