Spock- Groovy 多次调用同一个客户端并断言结果
Spock- Groovy call same client multiple times and assert the result
我正在尝试测试速率限制器逻辑,它应该会导致第 6 次试验时请求过多
我想摆脱重复调用服务 5 次并在前 5 次试验中断言 200,但没有运气,有一个例外
Groovyc:异常条件只允许出现在 'then' 块中
def "POST request towards service is successfully limited"() {
IntStream.range(1, 6).forEach({
when:
def result = client.post().uri("/test").exchange()
then:
noExceptionThrown()
result != null
result.expectStatus().isOk()
})
when:
def result6 = client.post().uri("/test").exchange()
then:
noExceptionThrown()
result6 != null
result6.expectStatus().is4xxClientError()
}
只需执行前 5 次调用并收集结果,然后对收集的结果进行断言。
def "POST request towards service is successfully limited"() {
when:
def results = (1..5).collect {
client.post().uri("/test").exchange()
}
then:
results.size() == 5
results.each {
it.expectStatus().isOk()
}
when:
def result = client.post().uri("/test").exchange()
then:
result.expectStatus().is4xxClientError()
}
noExceptionThrown()
是多余的,只有在 then
块中没有其他断言时才应使用它。
由于您没有 post 可编译和可运行的示例,我无法验证此代码是否有效,但应该足够接近了。
我正在尝试测试速率限制器逻辑,它应该会导致第 6 次试验时请求过多
我想摆脱重复调用服务 5 次并在前 5 次试验中断言 200,但没有运气,有一个例外 Groovyc:异常条件只允许出现在 'then' 块中
def "POST request towards service is successfully limited"() {
IntStream.range(1, 6).forEach({
when:
def result = client.post().uri("/test").exchange()
then:
noExceptionThrown()
result != null
result.expectStatus().isOk()
})
when:
def result6 = client.post().uri("/test").exchange()
then:
noExceptionThrown()
result6 != null
result6.expectStatus().is4xxClientError()
}
只需执行前 5 次调用并收集结果,然后对收集的结果进行断言。
def "POST request towards service is successfully limited"() {
when:
def results = (1..5).collect {
client.post().uri("/test").exchange()
}
then:
results.size() == 5
results.each {
it.expectStatus().isOk()
}
when:
def result = client.post().uri("/test").exchange()
then:
result.expectStatus().is4xxClientError()
}
noExceptionThrown()
是多余的,只有在 then
块中没有其他断言时才应使用它。
由于您没有 post 可编译和可运行的示例,我无法验证此代码是否有效,但应该足够接近了。