使用@variable()@ matcher时出现Json错误
我有一个场景,在下一个请求中必须使用特定的响应数据。 我用payload("{\"alarmName\":\"@variable('apiVersion')@\"}")
但执行失败,例外。以下是例外消息。使用@variable()@ matcher时出现Json错误
{"__v":0,"minVal":18,"alarmName":"TempAlarm7","_id":"59d50f49e877251d1eea592d"}
Number of JSON entries not equal for element: '$.', expected '1' but was '4'
任何想法如何解决它?
问候 怪才
这是因为实际的Json消息有多个元素(__v
,minVal
,alarmName
和_id
)。您的控制Json消息只是定义了元素alarmName
。 Citrus Json消息验证程序默认使用此严格模式,因此它将计数并检查所有元素是否在预期的控制Json消息中定义。这就是你得到错误的原因。
这里有两个选项。或者将控件Json消息中的所有缺失元素与@[email protected]
值相加或在Json消息验证程序中禁用严格模式。
<bean id="defaultJsonMessageValidator" class="com.consol.citrus.validation.json.JsonTextMessageValidator">
<property name="strict" value="false"/>
</bean>
使用JPath怎么样? – gucce
@ gucce其实好点!尽管这个选项并没有出现在我的脑海里,但是我完全有效的选择。而不是使用控制消息有效载荷,您可以使用验证JsonPath表达式与“验证(”$。alarmName“,”@variable('apiVersion')@“)' –
接下来的时间请花些时间,把你的代码片段代码块,这样他们是可读的,看到https://*.com/editing-help:第二个选项可以通过覆盖JSON的消息验证豆完成#语法突出。这对理解问题有很大的帮助。 – gucce