响应数据包含类似的内容。 " INBOUND_MESSAGE:
HTTP / 1.1 200 内容类型:应用程序/ JSON 传输编码:分块 日期:2017年9月22日星期五12:18:50 GMT
THEOBJECT = {
init: function() {
this.tools.init();
}
};
THEOBJECT.tools = {
active: false,
init: function() {
// active variable updated elsewhere/loading
if (!this.active) {
THEOBJECT.utils.timeout('tools.init', 100);
}
// is active so continue
}
};
THEOBJECT.utils = {
timeout: function(functionName, time) {
setTimeout(function() {
functionName.split('.').reduce((acc,curr) => acc[curr],THEOBJECT)();
}, time);
}
};
THEOBJECT.init();
是必需的。" "名称":" ValidatorError""属性" {"类型":"需"&#34 ;消息":"路径deviceId
是必需的。","路径":" deviceId","值" :""}"种类":"需""路径":" DEVICEID"&#34 ;值":""" $ isValidatorError":真}"名称" {"消息":&#34 ;路径{PATH}
是必需的。"," name":" ValidatorError"," properties":{" type&#34 ;:"必需","消息":"路径name
是必需的。","路径":&#34 ;名称""值":""}"种类":"需""路径&#34 ;:"名称""价值":""" $ isValidatorError":真正}}" _message&#34 ;:"设备验证失败","消息":"设备验证失败:deviceId:路径{PATH}
是必需的。,名称:路径deviceId
是需要的编""名称":" ValidationError"} "
我需要查看我是否可以验证$ .Message和条件必须是" deviceId`是必需的"。我使用下面的代码但是测试用例失败,因为$ .Message上有多个消息可用
name
是否有办法在响应消息中搜索预期的字符串。
此致 BJ
答案 0 :(得分:2)
通过使用JSONPath表达式$.message
,您不选择多个message
条目,但正好是根目录下的条目(您可以选择全部使用$..message
,有两个点。)
如果以格式化方式查看您的JSON数据,您可以立即看到最顶层message
条目的值为devices validation failed: deviceId: Path deviceId is required., name: Path name is required.
,这似乎是errors
内所有消息的串联{1}}部分。
因此,如果您的目标是验证字符串Path deviceId is required
是最顶级message
条目的一部分,则可以将以下Citrus匹配器与JSONPath表达式结合使用(另请参阅Citrus)关于JSONPath和validation matchers)的文档:
<message type="json">
<validate>
<json-path expression="$.message" value="@contains('Path deviceId is required')@"/>
</validate>
</message>
{
"errors": {
"deviceId": {
"message": "Path deviceId is required.",
"name": "ValidatorError",
"properties": {
"type": "required",
"message": "Path {PATH} is required.",
"path": "deviceId",
"value": ""
},
"kind": "required",
"path": "deviceId",
"value": "",
"$isValidatorError": true
},
"name": {
"message": "Path name is required.",
"name": "ValidatorError",
"properties": {
"type": "required",
"message": "Path {PATH} is required.",
"path": "name",
"value": ""
},
"kind": "required",
"path": "name",
"value": "",
"$isValidatorError": true
}
},
"_message": "devices validation failed",
"message": "devices validation failed: deviceId: Path deviceId is required., name: Path name is required.",
"name": "ValidationError"
}