我正在使用一个独立的moco服务器(see here for more about moco)来模拟服务器的json请求并获得相应的json响应。
给定方案的配置文件如下所示:
[
{
"request": {
"headers" : {
"JSESSIONID" : "awK325Su2489Urw44G-5JIMH"
},
"json": {
"sport":"boxing",
"cuptype":"world-wide",
"comparison":"best",
"number":"all"
}
},
"response": {
"headers" : {
"JSESSIONID" : "awK325Su2489Urw44G-5JIMH"
},
"json": {
"publicResultMessage":null,"updateServicePack":null,"checkbookFormat":1,"requestId":"67CDCECA","checkBookType":25,"servicePackContent":null,"deliveryType":1,"serviceId":24,"serverDate":"2015-05-13T16:08:37.942Z","upgradeApplicationMessage":{"writtenLeftToRight":null,"language":null,"data":null},"publicResultCode":0,"upgradeApplication":"0","errorCode":null,"debugMode":false,"supportNumber":"ABCD15484PPLKI","upgradeApplicationUrl":null
}
}
}
]
这是正常工作:每次我们发送带有上述请求数据的json请求以及头文件中的JSESSIONID值时,moco会提供正确配置的json响应。
然后规范发展并且无论向请求添加了多少其他参数,我都必须能够提供相同的响应。这意味着如果请求的json部分包含一个新参数,例如“now”datetime(例如使用(new java.util.Date()).toString()
获得),它仍应该能够提供相同的json响应。这看起来像一个严重的首先是挑战,但我发现了moco的contain
运算符,并意识到如果我将包含运算符应用于请求的已知部分,问题就可以解决了。
不幸的是,我找不到一种方法将它应用于json格式的请求,但仅作为文本请求。这意味着当我应用包含运算符时,我的请求会看起来像:
"request": {
"text": {
"contain":"text that should appear in the request"
}
},
"response": {
"json": {
"userToken":"Hys8475KLO451",
"deviceId":123
}
}
现在将此应用于我的初始json请求将迫使我将json转换为文本,一直添加转义字符并使json看起来像:
"\"sport\":\"boxing\",\"cuptype\":\"world-wide\",\"comparison\":\"best\",\"number\":\"all\""
哪个真的很难看。 但好消息是工作正常。但是我想知道是否包含可以直接应用于json(不将其格式化为原始文本)以及如何?还有什么其他意思我们可以用moco获得相同的结果?感谢。