赛普拉斯能否处理很长的api响应?

时间:2020-06-07 04:28:50

标签: angular http cypress

我有一个应用程序操作,涉及连续两次调用以Angular 8编写的数据访问服务(DAS)。

DAS有2种方法

  1. 方法1-使用async-await进行HTTP POST到API。称为“ api1”。
  2. 方法2-使用async-await进行2个连续的HTTP POST调用。将它们称为“ api2”,“ api3”。

    伪代码:

    Method1() {
      await http.post<dtoType1>(api1, options).toPromise();
    }
    
    Method2() {
      await http.post<dtoType2>(api2, options).toPromise();
      await http.post<dtoType3>(api3, options).toPromise();
    }
    

一切都可以在浏览器(Chrome 83,Edge 83)中完美运行。

但是,在赛普拉斯中,我在beforeEach()期间运行了Method1,它可以工作。然后,在对Method2的实际测试中,它调用了应用程序并发送了第一个HTTP POST请求,但我从未得到响应。这是我在Chrome / Edge中通过Angular应用程序调用时使用的API。

我使用cy.route()为每个不同的端点URL路径设置了路由。

我们称它们为@ api-area1和@ api-area2。

通过在代码中设置一个断点来验证api2的响应。但是,当我查看Chrome的“网络”标签时,从没有看到响应。我读到赛普拉斯(Cypress)为HTTP做某种代理,这可能会引起问题。我还有另一个独立的赛普拉斯测试,它仅调用了api1,并且可以正常工作。

在尝试api2调用后,我发现如果将它运行的时间少于28秒,则Cypress总是会收到HTTP响应。正常操作需要40秒钟,而且永远都无法做到。我认为赛普拉斯有一定的上限,无论使用超时是什么。

版本:

  • 赛普拉斯-4.7
  • 角度8
  • Windows 10 1909

0 个答案:

没有答案