【问题标题】:Issues while validating the two JSON payloads in MUNIT 2.0在 MUNIT 2.0 中验证两个 JSON 有效负载时出现问题
【发布时间】:2019-04-10 05:11:10
【问题描述】:

我有一个返回以下 json 有效负载的服务:

{

  "location-details": {

    "fromPostalCode": "1508XB",

    "fromGeoCoordinates": "116532,496398",

    "toPostalCode": "1511MA",

    "toGeoCoordinates": "120427,493380"

  },

  "commute-distance": "5817.799",

  "commute-time": "370.0152"

}

我已经创建了一个 MUNIT 测试套件,用于使用断言该实用程序断言有效负载的相同位置。片段如下:

<munit:validation >
<munit-tools:assert-that doc:name="Assert That Status Code is 200" doc:id="1c2e536b-513e-4b76-958b-2ea864a64805" expression="#[attributes.statusCode]" is="#[MunitTools::equalTo(200)]" message="The HTTP Status code is not correct!" />
<munit-tools:assert-that doc:name="Assert That - Payload is Expected" doc:id="f4b811fa-ff11-4746-93cc-f87576504808" expression="#[payload]" is="#[MunitTools::getResourceAsString('SuccessResponse.json')]" message="The response payload is not correct!"/>
</munit:validation>

但这会引发以下错误并且无法正常工作:

...38 more

Caused by: org.mule.runtime.api.el.ExpressionExecutionException: Unable to convert '{
  "location-details": {
    "fromPostalCode": "1508XB",
    "fromGeoCoordinates": "116532,496398",
    "toPostalCode": "1511MA",
    "toGeoCoordinates": "120427,493380"
  },
  "commute-distance": "5817.799",
  "commute-time": "370.0152"

}' with class 'java.lang.String' to class 'Matcher', while writing Java at org.mule.munit.tools.util.GetResourceFunctions.getResourceAsString.

               at org.mule.weave.v2.el.WeaveExpressionLanguage.doEvaluate(WeaveExpressionLanguage.scala:139)
               at org.mule.weave.v2.el.WeaveExpressionLanguage.evaluate(WeaveExpressionLanguage.scala:236)

【问题讨论】:

    标签: json mule anypoint-studio dataweave munit


    【解决方案1】:

    您的表达式中缺少匹配器组件,请按如下方式更改并重试:

    &lt;munit-tools:assert-that doc:name="Assert Payload is Correct" doc:id="5b45470f-05e8-406e-9d44-877ff1506220" expression='#[output application/json ---  write(payload, "application/json")]' is="#[output application/json --- MunitTools::equalTo(MunitTools::getResourceAsString('json\SuccessResponse.json'))]" message="The message is not correct"/&gt;

    这肯定行得通!

    【讨论】:

      【解决方案2】:

      我不得不使用readUrl 而不是MunitTools::getResourceAsString 来比较MUNIT 2.1

      中的两个JSON 对象
      <munit-tools:assert-that doc:name="Assert That - JSON compare" doc:id="2fab5bf0-a710-4619-a7a9-262a867e0ad9" expression="#[payload]" is="#[MunitTools::equalTo(readUrl('classpath://sample_data/test_payload.json', 'application/json'))]" message="payload is not correct" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-06
        • 2022-08-15
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        相关资源
        最近更新 更多