gpt4 book ai didi

groovy - 如何在没有正则表达式的情况下为 spring cloud contract DSL 构建自己的检查

转载 作者:行者123 更新时间:2023-12-05 05:21:33 25 4
gpt4 key购买 nike

示例 json:

{ id: 50,
dateTime: "2017-03-09T10:26: }

我不想编写正则表达式来接受任何数字作为 id,而是想检查它是否可解析为 Integer

对于日期时间,我可以写类似 '([0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[ 1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9])' (来自 RegexPatterns 类)但我只想检查它是否可解析为 LocalDateTime

Marcin 回答的解决方案:

在契约(Contract)中:

id: $(consumer(50), producer(execute('isInteger($it+"")'))),
dateTime: $(consumer('2017-03-09T10:26'), producer(execute('isLocalDate($it)'))),

在基类中:

public void isLocalDate(String date) {
boolean parseAble = false;
try {
LocalDateTime.parse(date);
parseAble = true;
} catch (DateTimeParseException e) {
}
assertThat(parseAble).isEqualTo(true);
}

public void isInteger(String value) {
boolean parseAble = false;
try {
Integer.parseInt(value);
parseAble = true;
} catch (NumberFormatException e) {
}
assertThat(parseAble).isEqualTo(true);
}

最佳答案

您可以使用execute 方法并创建您自己的方法来解析该值。您还可以提供自己的定制并编写自己的方法。检查这个http://cloud.spring.io/spring-cloud-static/spring-cloud-contract/1.0.3.RELEASE/#_executing_custom_methods_on_server_side还有这个http://cloud.spring.io/spring-cloud-static/spring-cloud-contract/1.0.3.RELEASE/#_extending_the_dsl分别了解更多信息

关于groovy - 如何在没有正则表达式的情况下为 spring cloud contract DSL 构建自己的检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com