示例 json:
{ id: 50,
dateTime: "2017-03-09T10:26: }
我不想编写一个正则表达式来接受任何数字作为 id,而是想检查它是否可解析为Integer
.
对于 dateTime,我可以编写类似'([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回答的解决方案:
在合同中:
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);
}