2015-12-24 30 views
0

我在將消息發送到JMS隊列之前設置了消息中的一些出站屬性,並且我想測試這些消息在將消息發送到JMS隊列之前是否已正確設置。如何使用MUnit XML驗證出站屬性?

我想過在JMS出站端點之前使用MUnit Spy,但是間諜只能驗證會話屬性,調用屬性和有效負載。有沒有另外一種方法可以使用MUnit XML來實現這一點?

我創建了一個迷你騾子項目來進一步說明問題。代碼如下所示。本質上,它只是一個流程,它調用一個在mule消息中設置出站屬性的子流程,並且MUnit有一個間諜在調用子流程後聲明出站屬性設置在mule消息中。但是,MUnit Spy似乎無法訪問mule出站屬性。我想知道此時是否有其他解決方法。我知道文檔指定間諜只能驗證會話和調用屬性以及此時的有效負載。任何建議都是值得歡迎的。

Sandbox.xml - 主要騾文件

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd"> 
    <flow name="outbound-props-flow"> 
     <flow-ref name="outbound-props-sub-flow" doc:name="Call outbound-props-sub-flow"/> 
     <logger message="#[message]" level="INFO" doc:name="Log Message"/> 
    </flow> 
    <sub-flow name="outbound-props-sub-flow"> 
     <set-property propertyName="outbound-prop-1" value="test1" doc:name="set-outbound-prop-1"/> 
     <set-property propertyName="outbount-prop-2" value="test2" doc:name="set-outbound-prop-2"/> 
    </sub-flow> 
</mule> 

MUnit文件 - 測試主要流程

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:mock="http://www.mulesoft.org/schema/mule/mock" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:munit="http://www.mulesoft.org/schema/mule/munit" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/mock http://www.mulesoft.org/schema/mule/mock/current/mule-mock.xsd"> 
    <munit:config name="munit" doc:name="MUnit configuration"/> 
    <spring:beans> 
     <spring:import resource="classpath:sandbox.xml"/> 
    </spring:beans> 
    <munit:test name="outbound-props-flow-outbound-props-flowTest" description="Test"> 
     <mock:spy messageProcessor="mule:sub-flow" doc:name="Spy"> 
      <mock:with-attributes> 
       <mock:with-attribute name="name" whereValue="#[matchContains('outbound-props-sub-flow')]"/> 
      </mock:with-attributes> 
      <mock:assertions-after-call> 
       <logger message="Message in SPY Module: #[message]" level="INFO" doc:name="Log Message in Spy"/> 
       <munit:assert-on-equals message="outbound-props-1 is not set properly" expectedValue="test1" actualValue="#[message.outboundProperties['outbound-prop-1']]" doc:name="Assert outbound-props-1 is set properly"/> 
       <munit:assert-on-equals message="outbound-props-2 is not set properly" expectedValue="test1" actualValue="#[message.outboundProperties['outbound-prop-2']]" doc:name="Assert outbound-props-2 is set properly"/> 
      </mock:assertions-after-call> 
     </mock:spy> 
     <flow-ref name="outbound-props-flow" doc:name="Flow-ref to outbound-props-flow"/> 
    </munit:test> 
</mule> 

感謝,

胡安

回答

1

不要使用 '間諜'爲此,它有一些限制。看看在文檔:

https://docs.mulesoft.com/mule-user-guide/v/3.7/the-spy-message-processor#defining-spy-actions

你可以簡單地增加流動裁判後斷言。

<munit:test name="outbound-props-flow-outbound-props-flowTest" description="Test"> 
    <flow-ref name="outbound-props-flow" doc:name="Flow-ref to outbound-props-flow"/> 
    <munit:assert-on-equals message="outbound-props-1 is not set properly" expectedValue="test1" actualValue="#[message.outboundProperties['outbound-prop-1']]" doc:name="Assert outbound-props-1 is set properly"/> 
    <munit:assert-on-equals message="outbound-props-2 is not set properly" expectedValue="test2" actualValue="#[message.outboundProperties['outbound-prop-2']]" doc:name="Assert outbound-props-2 is set properly"/> 
</munit:test> 
+0

嗨達沃 - 我認爲這將是正確的方法鑑於間諜的限制!謝謝!我認爲它應該是mulesoft在他們的下一個munit版本中修復的東西。 – jcb