2017-10-04 83 views
0

我有一個場景,在下一個請求中必須使用特定的響應數據。 我用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' 

任何想法如何解決它?

問候 怪才

+0

接下來的時間請花些時間,把你的代碼片段代碼塊,這樣他們是可讀的,看到https://stackoverflow.com/editing-help:第二個選項可以通過覆蓋JSON的消息驗證豆完成#語法突出。這對理解問題有很大的幫助。 – gucce

回答

1

這是因爲實際的Json消息有多個元素(__vminValalarmName_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> 
+1

使用JPath怎麼樣? – gucce

+0

@ gucce其實好點!儘管這個選項並沒有出現在我的腦海裏,但是我完全有效的選擇。而不是使用控制消息有效載荷,您可以使用驗證JsonPath表達式與「驗證(」$。alarmName「,」@variable('apiVersion')@「)' –

相關問題