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

时间:2017-03-09 09:40:15

标签: groovy spring-cloud-contract

示例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)'))),

在BaseClass中:

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);
}

1 个答案:

答案 0 :(得分:1)

您可以使用public void setAdapter() { this.adapter = new ArrayAdapter<String>(fragment.getContext(), android.R.layout.simple_list_item_1, mydeviceslist); lv.setAdapter(adapter); } 方法创建自己的方法来解析值。您还可以提供自己的自定义设置并编写自己的方法。分别查看此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以获取更多信息