定义合同DSL以将JSON元素计数从请求发送到响应

时间:2019-07-17 16:21:21

标签: spring-cloud-contract

我已经为Spring Cloud合约测试定义了合约。我在请求正文中发送JSON,并想在响应“ responseMsg”中返回“ keyValues”的计数。

我能够在“ requestedKeys”中返回“ keyValues”,但无法获得计数。任何帮助将不胜感激。

import org.springframework.cloud.contract.spec.Contract


Contract.make {


    name("lockUnlockKeys")

    request {
        method(POST())
        url("/api/v1.0/license/lockunlockkeys")
        headers {
            header 'Content-Type': 'application/json'
        }
        body(
                [
                        "keyValues":
                                [
                                        "0048Q-0MK1N-38V8C-013KP-0NQ00",
                                        "00497-4MK17-38V82-0L28M-11Q24"
                                ],
                        "lockflag": matching(regex("[YN]{1}"))
                ]
        )
        bodyMatchers {
            jsonPath('$.keyValues', byType {
                minOccurrence(1)
            })
        }
    }
    response {
        status(200)
        body(
                [
                        "requestedKeyList": value(fromRequest().body('$.keyValues')),
                        "responseMsg": ?????????
                ]
        )
        headers {
            header 'Content-Type': 'application/json'
        }
    }
}

任何建议代替“ ???????”

1 个答案:

答案 0 :(得分:0)

谢谢 fromRequest().body('$.keyValues.length()')

这对我有用