问题描述
在大多数情况下,我可以通过元素content-type及其内部的值指定模拟。我正在将它与xpath连接起来,一切都进行得很好。但是现在我有了一个案例,在wsdl中,每个xsd都具有相同的内容类型。我不知道如何创建特定的模拟条件。我猜这个URL内每个xsd中唯一不同的是根元素。你有什么解决办法吗?您是否认为可以根据请求根元素指定模拟,如何执行?这是我合同的例子
Contract.make {
request {
priority(1)
method 'POST'
url '/ws/xxxx/xxx'
body(new MatchingStrategy(anyNonEmptyString(),MatchingStrategy.Type.MATCHING))
bodyMatchers {
xPath("//*[local-name()='Chnl']/text()",new MatchingTypeValue(MatchingType.EQUALITY,"xxx"))
}
headers {
header(contentType(),regex('application/.*xml.*xxxxxxx.*'))
}
}
response {
status 200
body(fileAsBytes("xxxx.xml"))
headers {
contentType(applicationXml())
}
}
}
解决方法
我通过在bodyMatcher中为主要xml元素添加新的xpath条件解决了我的问题。
xPath("//*[local-name()='Body']",new MatchingTypeValue(MatchingType.REGEX,".*nameOfRootXmlElement.*"))