如何在MUnit测试用例中用Set Message设入站属性?URI参数MEL报错
解决MUnit中Set Message组件MEL表达式解析单引号嵌套的问题
我之前也踩过MEL表达式里单引号嵌套的坑,太懂这种报错的烦躁了!咱们先拆解下你的问题:
你想设置URI参数productcode : ('11','10'),但原表达式#[['productcode' :'( ('11','10'))']]里的单引号嵌套导致解析器混乱——MEL基于Groovy,单引号包裹的字符串里,内部的单引号会被当成字符串的结束符,直接打断表达式结构,所以才会抛出MEL parsing failed的错误。
下面给你两种靠谱的解决办法:
办法1:转义内部单引号
在Groovy的单引号字符串中,内部的单引号需要用两个连续单引号来转义。修改后的表达式应该是:
#[['productcode': '( (''11'', ''10''))']]
这样解析器就能正确识别内部的'11'和'10'是字符串的一部分,不会提前终止外层字符串。
办法2:改用双引号包裹外层字符串
如果觉得转义单引号看着乱,也可以用双引号来包裹外层的键值对字符串,这样内部的单引号就不需要转义了:
#[["productcode": "( ('11', '10'))"]]
注意:双引号在MEL里支持变量插值,如果你这里只是静态值,完全没问题;如果后面要加动态变量,记得用MEL表达式语法,但你的场景里静态值用这个更清爽。
额外小技巧:用Groovy脚本简化设置
如果参数结构更复杂,我个人更推荐用Groovy脚本组件先把参数值存到flow变量里,再在Set Message里引用,可读性更强:
// Groovy脚本内容 flowVars.productCodeParam = "( ('11', '10'))"
然后在Set Message的URI参数里写:
#[['productcode': flowVars.productCodeParam]]
这样不仅避免了单引号嵌套的问题,后续修改参数值也更方便~
内容的提问来源于stack exchange,提问作者Akil karthik
相关产品推荐
相关产品推荐

