【发布时间】:2016-12-22 09:16:50
【问题描述】:
我正在尝试使用独立的 wiremock 创建 API 模拟。响应正文取决于请求正文中的属性。
使用 JSON,我能够做到。这是示例映射:
{
"request":{
"method":"POST",
"bodyPatterns":[
{
"matchesJsonPath":"$.somekey.subkey[?(@.attribute == 'VALUE_123')]"
}
]
},
"response":{
"status":200,
"bodyFileName":"res.dat",
"headers":{
"Content-Type":"application/x-proto;charset=UTF-8"
}
}
}
但是,我的主要要求是处理 google protobuf,我正在尝试使用文本格式来代替模拟程序用来模拟 API 以进行响应的文本格式。因此,请求文件是文本格式,并且没有任何 JSON 验证,例如双引号或每行末尾的逗号等。
我发现使用 JSON 路径,wiremock 无法匹配请求体,因为它的格式不正确。 比如这样的请求:
{
animal {
type {
key1: "value"
key2: value2
}
}
}
而不是
{
"animal":{
"type":{
"key1":"value",
"key2":"value2"
}
}
}
假设key1 = value1 应该匹配并且应该返回response1.json,或者当key1 = someOtherValue 时应该返回response2.json。
是的,key 是 type 的一部分,type 是 animal 的一部分。如何实现此请求正文匹配?
【问题讨论】:
标签: json mocking jsonpath wiremock