【问题标题】:Polling a-sync REST service till result is true within CodeceptJS scenario在 CodeceptJS 场景中轮询异步 REST 服务直到结果为真
【发布时间】:2020-01-09 22:07:39
【问题描述】:

寻找一种解决方案来轮询异步 REST 调用,直到使用 Codeception / codeceptJS e2e 测试套件找到结果。根本不知道这是否可能。轮询最多持续 1 到 2 分钟,每 10 秒一次即可。

Scenario.only('Poll for print job status', async (I, loginAs) => {

    const guid = '4b46b91f-5e03-4bd1-845e-96d179b9f607';

    const endPointObj = { endPoint: 'https://......../print-service/api/print/job/',
                          headers: { 'Ocp-Apim-Subscription-Key': 'theKey' },
                          APIversion: '?api-version=2019-07-01' 
                        }

    const printJobService = async (guid, found) => {

      let serviceResultData;
      const serviceResult = await I.sendGetRequest(`${endPointObj.endPoint}${guid}${endPointObj.APIversion}`, endPointObj.headers);

      serviceResultData = serviceResult.data;

      return serviceResultData;
    }

    const printJobServiceResultFound = await printJobService(guid);
    const response = printJobServiceResultFound;
    // checkResult is an external UTIL function that checks the result
    assert.equal(checkResult(response), 'FOUND');

    pause();
});

所以我已经完成了这项工作,但这只是一次运行。一直在考虑不同的方法,但我唯一想到的是 retry() 函数,但这依赖于失败的东西。我的服务没有失败。

需要轮询函数printJobService

我们将不胜感激。

【问题讨论】:

    标签: angular rest codeceptjs


    【解决方案1】:

    这是为旧的 RxJS 编写的,它递归地轮询服务,直到服务返回 JSON 属性 __next,一旦 __next 不存在,这意味着轮询必须停止。您可以将其修改为 rxJS 6+。如果有帮助,请告诉我

    poll(): Observable<{source : STATS[], data : any[]}>{
        return this.retrieve('STATS')
        .map(res=>res.json().d)
        .delay(5000)
        .expand(obj => obj.__next 
            ? this.retrieve('STATS',obj.__next.substr(obj.__next.indexOf('?')+1)).map(res=>res.json().d)
            : Observable.empty()
        )
        .reduce((acc, data) => acc.concat(data.results), [])
        .map((stats) => {
          // when succesful
        })
        .catch(this.errorHandler);
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多