在模拟服务URL中使用通配符

时间:2014-11-28 18:41:11

标签: rest groovy mocking soapui

我需要模拟一个休息服务,模拟已经在使用SoapUI了。问题是我创建了一个带有这个/test/userA/的网址的模拟。

有没有办法创建一个也会响应网址/test/userB/的模拟?我在想/test/user?/test/user[A-Z]/之类的东西。是否可以使用SoapUI?

1 个答案:

答案 0 :(得分:2)

我有点晚了,但这是一个可能的解决方案...

无法在SOAPUI mockService中配置此类路径,但您可以使用以下方法模拟目标:

您只能将/配置为url路径,所有对http://your.mock.host:port/的请求都将在mockService中处理。

然后检查路径是否是您想要的/test/user[A-Z]/并根据[AZ]做出不同的响应,您可以在mockService的示例onRequest script选项卡中使用follow groovy脚本,或者在您在mockService中的操作的Dispatch(SCRIPT)选项卡:

// the regex
def pathRegex = /^\/test\/user([A-Z])\//  

// get the request path
def path = mockRequest.getPath()

// check if the path is correct
def matcher = (path =~ pathRegex)  

// path is not correct 
// change assert to do your logic break... 
assert matcher.matches()

// path is correct get the exaclty user[A-Z] to do 
// your logic
def letter = matcher.group(1)
log.info letter
// do your logic depends on letter
...

此脚本的行为类似于:

对于网址/wrong/url/

输出:

assert matcher.matches()
           |       |
           |       false
           java.util.regex.Matcher[pattern=^/test/test([A-Z])/ region=0,10 lastmatch=]

对于网址/test/userA/

Wed Nov 04 10:02:06 CET 2015:INFO:A

对于网址/test/userW/

Wed Nov 04 10:02:33 CET 2015:INFO:W

希望这有帮助,