首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mule Munit带有选择,后跟Dataweave变换

Mule Munit带有选择,后跟Dataweave变换
EN

Stack Overflow用户
提问于 2018-02-28 01:59:40
回答 1查看 1.3K关注 0票数 1

我有一个流,它有一个Choice,后面跟着一个Dataweave转换。流的输入是json。选项的when语句如下:

代码语言:javascript
复制
<when expression="#[payload.resultSet1.size() >= 1]">

流程运行良好:

代码语言:javascript
复制
<flow name="test1">
 <db:stored-procedure doc:name="MyStoredProc"></db:stored-procedure>
 <choice doc:name="data found?">
        <when expression="#[payload.resultSet1.size() >= 1]">
            <dw:transform-message doc:name="CreateResponse">
                     <dw:set-payload resource="classpath:/dataweave/someDataweave.dwl" />
              </dw:transform-message>
        </when>
       <otherwise>
              <logger message="False:  payload:#[payload]" level="INFO" doc:name="Log-False"/>
        </otherwise>
    </choice>  
</flow>

现在,我正在尝试为它创建一个Munit测试。为了让选择起作用,我不得不对数据进行一些处理。选择现在起作用了,但是现在dataweave转换抛出了一个异常,因为它说json数据缺少引号。市政:

代码语言:javascript
复制
<munit:test name="test1-tryit" description="Test">
      <mock:when messageProcessor=".*:.*" doc:name="Mock MyStoredProcResults">
        <mock:with-attributes>
            <mock:with-attribute name="doc:name" whereValue="#['MyStoredProc']"/>
        </mock:with-attributes>
        <mock:then-return payload="#[flowVars.jsonStoredProcResponse]" mimeType="text/json"/>
    </mock:when>
    <set-payload value="#[getResource('myTestData.json').asStream()]"  doc:name="GetStoredProcResponse" mimeType="application/json"/>
    <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
    <set-variable variableName="jsonStoredProcResponse" value="#[payload]" doc:name="jsonStoredProcResponse" />
   <flow-ref name="test1" doc:name="Flow-ref to test1 flow" />

myTestData.json文件中的数据如下:{"resultSet1":{ "field1":"123“}}

不确定如何解决此问题,并使选择和转换都起作用。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-03-23 15:31:55

代码语言:javascript
复制
    Try using below groovy script:

    <scripting: script name="mockDataBaseResponse" engine="groovy" doc:name="Script"><![CDATA[
    Hashmap<String,String> cursor = new Hashmap<String,String>();
    cursor.put("field1","123");
    LinkedList List = new LinkedList();
    List.add(cursor);
    Hashmap<String,Object> cursorMap = new Hashmap<String,Object>();
    cursorMap.put("resultSet1",List);
    return cursorMap;]]>
    </scripting:script>

Mock payload using script:

<mock:then-return payload="#[resultOfScript('mockDataBaseresponse')]" mimeType="text/java"/>

Also include this script file in you Munit xml file.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49015097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档