0

假设我有这样的合同:

org.springframework.cloud.contract.spec.Contract.make {
request {
    method "GET"
    url "/api/profiles"
    headers {
        header('Accept': 'application/json;charset=UTF-8')
        header('Content-Type': 'application/json;charset=UTF-8')
    }
}
response {
    status 200
    headers {
        header('Content-Type': 'application/json;charset=UTF-8')
    }
    body(
            value(
                    stub(
                            '''\
                    [
                      {
                        "profile": "profile1",
                      },
                      {
                        "profile": "profile2",
                      }
                    ]   
                    '''
                    ),
                    test(
                            [
                                    [
                                            "profile" : regex(nonEmpty()),
                                    ]
                            ]
                    )
            )
    )
}

的测试"profile" : regex(nonEmpty())仅检查是否存在至少一个具有profile非空属性的数组条目。

我想测试所有条目都有一个非空的profile.

我已经使用测试匹配器尝试过这个:

jsonPath('$.[*].profile', byRegex(nonEmpty()))

虽然这会检查每个profile字段是否为非空,但它不会检查这样的字段是否确实存在。

如何测试profile每个数组条目中是否存在一个字段并且每个字段都不为空?

4

1 回答 1

1

我想最简单的方法是byCommand在该testMatchers部分中使用并在那里传递列表。然后以编程方式手动断言您想要的任何内容。

于 2017-12-28T10:46:29.890 回答