cy.server();
cy.route('POST', 'my/api').as('myApi');
...
cy.wait('@myApi');
...
cy.route('POST', 'my/api').as('myApi');
cy.wait('@myApi');
当我的应用在同一测试中两次调用相同的API时,根据上述代码,第二个cy.wait
立即完成,因为它看到第一个API已完成。为了解决这个问题,我在所有路由别名后面都添加了一个随机数。这是正确的方法吗?
答案 0 :(得分:1)
您可能可以做得更好。 cy.route()命令只是一个定义,因此您应该将所有路由分组在文件的顶部。路线只需要定义一次。然后尝试像cy.wait().otherStuff().wait()
中那样链接您的等待,或者至少将您的等待与必须先成功的其他内容链接。
答案 1 :(得分:1)
在这种情况下,第二次等待,您可以尝试以下操作。
cy.server();
cy.route('POST', 'my/api').as('myApi');
cy.wait('@myApi').then(() => {
// You probably want to add some assertions here
});
// Do your stuff here
cy.wait(['@myApi', '@myApi']).then(() => {
// Second assertion. Probably, something should be changed in the second request.
});
答案 2 :(得分:0)
谢谢您的提问!我认为先前的答案是完全正确的。默认情况下,赛普拉斯路由只是别名。您可以在赛普拉斯文档here中找到类似的示例。
因此,您的代码应该是这样的:
cy.server();
cy.route('POST', 'my/api').as('myApi');
cy.wait('@myApi').then(() => {
// You probably want to add some assertions here
});
// Do your stuff here
cy.wait('@myApi').then(() => {
// Second assertion. Probably, something should be changed in the second request.
});