gpt4 book ai didi

spring-boot - Spring Cloud Contract - 查询参数契约(Contract)始终与同一契约(Contract)匹配

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

我正在处理 spring cloud contract 并且有一个用例,我希望在缺少一些查询参数时响应为 BAD_REQUEST,而在所有必需查询参数都存在时响应为 OK。为了实现这一点,我有不同的契约(Contract)(groovy 文件)来满足每个这样的请求/响应。但是当我从消费者(有/没有查询参数)进行测试时,无论是否存在查询参数,所有这些都只匹配一份契约(Contract)。

下面列出的契约(Contract),

两个查询参数都不存在

Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate")
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BothFieldsNotPresent"
headers {
contentType('application/json')
}
}

}

查询参数 B 不存在

Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate") {
queryParameters {
parameter 'a' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BNotPresent"
headers {
contentType('application/json')
}
}

存在查询参数且响应正常

Contract.make {
description("Test to see if authorisation works")
request {
method 'GET'
urlPath('/check/validate') {
queryParameters {
parameter 'a' : equalTo("AUTHORISED")
parameter 'b' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(200)
"body" "shouldReturn200OkValidRequest"
headers {
contentType('application/json')
}
}

问题:

  1. 我的所有测试用例都与第一个用例匹配两个查询参数都不存在,而不是与特定匹配。请让我知道我缺少什么。

  2. 有人可以指出有关满足上述要求的查询参数的 spring-cloud-contract 文档。找到了这个 ( http://cloud.spring.io/spring-cloud-contract/1.0.x/#_passing_optional_parameters ),但我需要有关上述要求的更多信息。

最佳答案

你们的契约(Contract)正在相互延期。每一个都比另一个更具体。您必须使用 priority() 方法来说明哪个比另一个更具体。例如。最不具体的应该具有最高的值(value)优先级 - priority(100) 。最 - priority(1)

两个查询参数都不存在

Contract.make {
priority(100)
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate")
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BothFieldsNotPresent"
headers {
contentType('application/json')
}
}
}

查询参数 B 不存在

Contract.make {
priority(50)
description("Test to see if authorisation works")
request {
method 'GET'
urlPath("/check/validate") {
queryParameters {
parameter 'a' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(400)
"body" "shouldReturnBadRequest400BNotPresent"
headers {
contentType('application/json')
}
}
}

查询参数存在且响应正常

Contract.make {
priority(10)
description("Test to see if authorisation works")
request {
method 'GET'
urlPath('/check/validate') {
queryParameters {
parameter 'a' : equalTo("AUTHORISED")
parameter 'b' : value(regex(nonBlank()))
}
}
headers {
contentType('application/json')
}
}
response {
status(200)
"body" "shouldReturn200OkValidRequest"
headers {
contentType('application/json')
}
}
}

关于spring-boot - Spring Cloud Contract - 查询参数契约(Contract)始终与同一契约(Contract)匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54342455/

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