首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于JSON响应的空手道轮询

基于JSON响应的空手道轮询
EN

Stack Overflow用户
提问于 2020-03-06 23:46:33
回答 1查看 284关注 0票数 1

我正在数据库中创建一个动物,然后尝试检索我刚刚创建的动物。但是,在数据库中有大约5-10秒的时间延迟。因此,睡眠等待不适合这种情况,因为响应时间不同。

我想轮询消息,直到数组中返回animalId。在重试请求时重新生成requestId标头也很重要。

实现这一目标的最优雅的方式是什么?

场景:

代码语言:javascript
复制
    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'
EN

回答 1

Stack Overflow用户

发布于 2020-03-07 03:01:35

https://github.com/intuit/karate#retry-until语法就是您要查找的retry until语法

编辑:关于此要求:

重试请求时重新生成requestId标头也很重要。

您必须使用JavaScript函数执行configure headers,以便每次重试时都会触发该函数。否则,没有其他选项可以调整正文,如果需要,请手动编写轮询循环(文档中也有解释)。

编辑:这里有一个简单的例子,让你自己看看foo头是如何在每次重试时都是动态的。将这个粘贴到一个新的Scenario中,它就会起作用。

代码语言:javascript
复制
* def counter = { value: 0 }
* configure headers = function(){ return { foo: counter.value } }
* url 'http://httpbin.org/get'
* retry until counter.value++ == 2
* method get
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60567421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档