【发布时间】:2018-07-13 11:48:38
【问题描述】:
我正在尝试使用 Spring Cloud 合约。我编写了一个 JSON 正文规范,我需要一个 Date 属性是可选的。 当我在 groovy dsl 中指定时:
"processingDate": $(consumer(optional(anyDate())), producer(anyDate())),
失败了:
Exception in thread "main" Assertion failed:
assert testSide ==~ Pattern.compile(stubSide.optionalPattern())
| | | | |
| false | | (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
| | (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
| (org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2016-06-16)))?
org.springframework.cloud.contract.spec.internal.ClientDslProperty(DslProperty(clientValue:(\d\d\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]), serverValue:2011-01-11))
然而,当使用 optional 和正则表达式时它可以工作:
"processingDate": $(consumer(optional(regex(isoDate()))), producer(LocalDateTime.now().format(DateTimeFormatter.ISO_DATE))),
但显然我不想为每个可选字段使用这样的解决方法。
谢谢!
【问题讨论】:
-
你能在这里分享你的
groovy合同文件吗? -
上面的第一个代码示例是我的 groovy 合约中的相关行。
标签: spring-cloud spring-cloud-contract