我有下面的代码,我想根据测试的where
部分替换值:
void 'should pass some test() {
given:
stubFor(get(urlEqualTo("/someVal/$productOrderId"))
.willReturn(defaultWiremockResponse()
.withBody("""
{
"startDateTime" : ${myTime? "$myTime" : null}
}
"""
)
//...... some when
//...... some then
where:
productOrderId | myTime
"1" | "2023-04-23T07:13:15.862Z"
"2" | "null"
}
此测试适用于null
,但对于像"2023-04-23T07:13:15.862Z"
这样的值给出错误
嵌套异常是com。fasterxml.jackson.databind.JsonMappingException:意外字符('-'(代码45)):需要用逗号分隔对象条目
我认为不知何故"startDateTime"
没有得到双引号""
的值,得到如下所示
{
"startDateTime" : 2023-04-23T07:13:15.862Z // missing quotes around the value
}
这可能就是问题所在有人能帮助我理解这一点,并修复这个错误的字符串插值
2条答案
按热度按时间vyu0f0g11#
尝试使用
\
处理双引号djp7away2#
就像我在 Shashank Vivek 的答案下的评论中所说的,你也可以这样做,完全避免嵌套的GString插值:
控制台日志:
在Groovy Web Console中尝试。
可以随意忽略反斜杠和缩进删除。我只是为了避免不必要的缩进和换行符。