Cypress 等待失败

Cypress 等待失败,cypress,end-to-end,Cypress,End To End,在阅读了大量文档并试图找到问题的解决方案后,我什么也没找到,所以我们开始吧 我在测试我的端到端流时遇到以下问题,我正在测试的流确实会不断地启动请求,但有一种情况下,我希望这些请求会停止。换句话说,如果发出请求,我想抛出一个错误,如果没有任何请求,我想在超时时继续出错 cy.wait('@my-request', { timeout: 20000 }) 如果应用程序工作正常,我预计会超时,所以我尝试这样做 cy.wait('@my-request', { timeout: 20000 })

在阅读了大量文档并试图找到问题的解决方案后,我什么也没找到,所以我们开始吧

我在测试我的端到端流时遇到以下问题,我正在测试的流确实会不断地启动请求,但有一种情况下,我希望这些请求会停止。换句话说,如果发出请求,我想抛出一个错误,如果没有任何请求,我想在超时时继续出错

cy.wait('@my-request', { timeout: 20000 })
如果应用程序工作正常,我预计会超时,所以我尝试这样做

cy.wait('@my-request', { timeout: 20000 })
    .its('status').should('not.eq', 404)
    .its('status').should('not.eq', 200);

我希望执行链式任务,但这仅在发出请求时发生,并且尝试使用
。然后
,但我也有同样的问题。

添加全局失败事件可以帮助我们,但也限制了在测试失败时不执行其他代码,并且我们强制将其标记为完成

在测试定义中,我们可以像示例中那样添加done回调

it('Description', (done) => {
// other test stuff
cy.on('fail', (err) => {
    if (err.name === 'CypressError' && err.message.includes('routeAlias') && err.message.includes('Timed out')) {
        done();
        return true;
    }
    throw err;
});
cy.wait('@routeAlias', { timeout: 20000 })
    .then(() => {
        throw new Error('Error request found.');
    });
});
// Any remaining code won't be executed if you need to reset something you need to create a new step, like in my case I did a new step to click a cancel button and prepare the app for the next test.
现在,当捕捉到这个特定错误时,我们的测试通过了,但是任何其他错误都会导致测试错误


cypress不推荐这种解决方法,但除非cypress添加捕获来管理某些错误,否则这是解决我的问题的唯一方法。

不确定您要做什么,但cy.wait()只接受路由的别名,并且似乎您正在尝试按请求做?在流程中的某一点,应用程序应该停止池化API,我想对此进行测试,如果调用此端点的任何新事件,则测试将失败。好的,我猜您正在尝试进行请求轮询,请查看链接请求与我的要求不匹配。我找到了一个解决方法,使用
ci.on('fail')
nice!,请在下面标记您的评论作为答案,这将有助于社区:)