【发布时间】:2017-08-28 10:19:25
【问题描述】:
我正在使用 Spring Cloud Contract 框架进行 REST 服务集成测试和相关的客户端应用程序合同。它适用于对象 JSON 请求/响应,但有机会检查简单的字符串。特别是,服务哪个响应布尔值(响应正文中的真或假)?
groovy 定义的一部分:
response {
status 200
headers {
header('Content-Type', 'application/json;charset=UTF-8')
}
body(
value(client('true'), server(regex("true|false")))
)
}
生成测试的相关部分:
String responseBody = response.getBody().asString();
null;
这是一个错误,不是吗?还是我应该在 groovy 定义中做得更好?第一行让生成器有机会理解我想要什么,但第二行完全没有了。感谢您的任何提示。
附:我知道对于只有字符串“真实”有效性作为 JSON 响应有不同的看法(有些人这么说,其他人不这么说)请不要解决它,但只有真正的问题 :-)
【问题讨论】:
-
这不是错误,因为这个 JSON 完全无效。尝试将内容类型更改为
text/plain之类的其他内容,看看它是否工作正常。如果不是,那么这确实是一个错误 -
"true" 是有效的 JSON。
-
这就是我在 P.S. 中所说的。有很多意见,但我找不到任何正当理由非地图/非数组值必须是无效的JSON。
-
IMO,生成的 java 代码“null;”无论如何看起来都是一个错误。