Cypress中等待请求失败

6

我在自动化测试中针对3个不同的请求编写了等待函数,但每次运行测试时,其中一个请求上的等待函数会失效。

 cy
        .intercept('POST', '**/api/Availability')
        .as('availabilecheck');
    cy
        .wait('@availabilecheck')
        .its('response.statusCode')
        .should('eq', 200)

////////////////////////////////////////

        cy
    .intercept('POST','**/api/Availability/GetPrice')
    .as('getpricecheck');
cy
    .wait('@getpricecheck')
    .its('response.statusCode')
    .should('eq', 200);

////////////////////////////

 cy.intercept('POST','**/api/Member/Find')
        .as('memberresponse')
    cy.wait('@memberresponse')

我为三个不同的请求编写了上述代码,但每次运行测试时,其中一个请求实际上会等待,而其他两个请求则会失败。
我该怎么办?
2个回答

2

命令的顺序很重要。在我的情况下,我需要将cy.intercept()命令移动到执行request操作之前。

//the intercept comes first
cy.intercept("POST", "**/api/user/login").as("loginResponse");

//this performs POST request in my case, comes second
cy.get('button[type="submit"]').should("not.be.disabled").click();

//thirdly comes the wait
cy.wait("@loginResponse").its("response.statusCode").should("eq", 200);

2
原帖作者在请求之前已经有了他们的拦截命令,所以这个答案对我来说似乎没有意义? - Manpreet
1
如果我没有错的话,原帖作者在拦截和等待之间没有任何请求。 - Patronaut

0
如果你拦截的端点没有不同之处,那么Cypress只会采取第一个并丢弃任何后续的端点。请确保你匹配URL的文本对于每个请求都是不同的。

我不认为这是我的问题,我已经尝试了其他方式来编写URL,但仍然无法工作。 - Tester Unknown
我刚刚更新了问题并添加了其他等待时间。 - Tester Unknown
我尝试验证这是否是一个minimatch的问题,但事实并非如此,因此我的答案是无效的。我将尝试重新审视这个问题,并看看能否提出另一个理论。同时,你能否提供一个最小可重现的例子来说明你遇到的确切问题? - Shafiq Jetha
非常感谢。我不认为我能提供那个。但是我遇到了这个错误:“超时重试20000毫秒后:cy.wait()超时等待第一个请求到达路由器:availabilecheck,没有任何请求发生。” - Tester Unknown
这听起来就像应用程序从未发出请求一样。如果您在测试应用程序时检查开发工具的网络选项卡,那么您将能够验证应用程序是否正在发出请求。 - Shafiq Jetha
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接