我正在数据库中创建一个动物,然后尝试检索我刚刚创建的动物。但是,在数据库中有大约5-10秒的时间延迟。因此,睡眠等待不适合这种情况,因为响应时间不同。
我想轮询消息,直到数组中返回animalId。在重试请求时重新生成requestId标头也很重要。
实现这一目标的最优雅的方式是什么?
场景:
Given path '/animals'
And header requestId = uniqueString(5)
When method post
Then status 200
* def animalId = response.animalId
Given path '/animals'
And header requestId = uniqueString(5)
When method get
Then status 200
{
"animals": [
{
"animalId": "12219958",
"reference": [
"12345"
]
}
]
}
* def animalDetails = karate.jsonPath (response, "$.animals.[?(@.reference[0]== '" + animalId + "' )]")[0]
* def animalId = '12345'发布于 2020-03-07 03:01:35
https://github.com/intuit/karate#retry-until语法就是您要查找的retry until语法
编辑:关于此要求:
重试请求时重新生成requestId标头也很重要。
您必须使用JavaScript函数执行configure headers,以便每次重试时都会触发该函数。否则,没有其他选项可以调整正文,如果需要,请手动编写轮询循环(文档中也有解释)。
编辑:这里有一个简单的例子,让你自己看看foo头是如何在每次重试时都是动态的。将这个粘贴到一个新的Scenario中,它就会起作用。
* def counter = { value: 0 }
* configure headers = function(){ return { foo: counter.value } }
* url 'http://httpbin.org/get'
* retry until counter.value++ == 2
* method gethttps://stackoverflow.com/questions/60567421
复制相似问题