我正在尝试在查询参数的xpath匹配中放置AND条件,但是它不起作用。
我正在创建多个存根,其中uniqueId可能同样包含数字00000或11111,但serviceName将不同。例如,在第一个请求中,uniqueId为1000001,serviceName ='ABC',在第二个请求中,唯一ID再次为1000001,serviceName为'XYZ'。对于两者的响应将有所不同。我创建了三个存根,一个存根用于服务ABC,第二个存根用于服务XYZ,第三个存根是默认的,没有和xpath匹配。当我用queryparameter调用service包含uniqueId 1000001和serviceName ABC或XYZ时,每次我得到默认存根的响应。在查询参数中传递xml
"queryParameters":{
"xmlreqdoc": {
"matchesXPath" : "//*[[local-name()='uniqueId'][text()[contains(.,'00000')]] AND //*[local-name()='serviceName'][text() = 'ABCDEFGH']]"
}
}
与&&一起尝试,它也不起作用。另外,尝试用2个matchsXPath逗号分隔,也对我不起作用。
"queryParameters":{
"xmlreqdoc": [
{
"matchesXPath" : "//*[//[local-name()='uniqueId'][text()[contains(.,'00000')]]"
},{
"matchesXPath" : //*[local-name()='serviceName'][text() = 'ABCDEFGH']]"
}
]
}
我已经创建了具有优先级的存根。。似乎每次默认都返回一个。以下是请求xml
<?xml version="1.0" encoding="UTF-8"?>
<service>
<serviceHeader>
<userId>XXXX</userId>
<password>XXXXX</password>
<serviceName>ABCDEFGH</serviceName>
</serviceHeader>
<serviceBody>
<subServiceName>add</subServiceName>
<uniqueId>00000</uniqueId>
</serviceBody>
</service>
下面是我创建的存根映射
{
"priority" : 1,
"request": {
"urlPath": "/testMappings",
"method": "GET",
"headers": {
"Content-Type": {
"equalTo": "application/xml"
},
"Accept": {
"equalTo": "application/xml"
}
},
"queryParameters":{
"xmlreqdoc": {
"matchesXPath" : "//*[//[local-name()='uniqueId'][text()[contains(.,'00000')]] AND //*[local-name()='serviceName'][text() = 'ABCDEFGH']]"
}
}
},
"response": {
"status": 400,
"headers": {
"Content-Type" : "application/xml"
},
"fixedDelayMilliseconds": 500,
"bodyFileName": "ERROR.xml"
}
}
任何帮助或指示,我们将不胜感激。预先感谢!
您已经告诉我们您尝试过的错误语法,但是您没有告诉我们您要实现的目标,因此我们可以告诉您您做错了什么,但是我们无法告诉您如何使其正确。
"//*[//[local-name()='uniqueId'][text()[contains(.,'00000')]] AND //*[local-name()='serviceName'][text() = 'ABCDEFGH']]"
这里明显有问题的地方:
//
后紧接一个谓词text()
=
时不必要地使用contains()AND
应该是and
也许你想要//uniqueId = '00000' and //serviceName = 'ABCDEFGH'