我有一个应用程序操作,涉及连续两次调用以Angular 8编写的数据访问服务(DAS)。
DAS有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秒钟,而且永远都无法做到。我认为赛普拉斯有一定的上限,无论使用超时是什么。
版本: