gpt4 book ai didi

Cypress.io - 断言没有对 URL 的 XHR 请求?

转载 作者:行者123 更新时间:2023-12-03 23:54:43 26 4
gpt4 key购买 nike

使用 cypress.io 进行测试时,是否有一种好方法可以断言没有对给定 URL 发出 XHR 请求?

我想断言在单击“保存”按钮时添加了一个新的 foo,而不是在单击“取消”按钮时添加。

像这样的东西:

cy.route('POST', '/foos').as('postFoo');
cy.get('.cancel-button').click();
cy.route('@postFoo').should('not.have.been.called'); // (magic imaginary syntax!)

我已经尝试使用执行 assert.fail 的 onRequest 回调来设置 cy.route,但是在调用 URL 时并没有使测试失败。

现在,我正在捕捉我的(有意的)“未发生请求”错误,如下所示:
cy.on('fail', (err, runnable) => {
expect(err.message).to.include('No request ever occurred.');
return false;
});

cy.wait('@postFoo', { timeout: 0 }).then(xhr => {
throw new Error('Unexpected API call.');
});

...这似乎有效,但它肯定不会让人感觉很“柏树-y”。

最佳答案

您可以重新别名您的 route并更改其 onRequest throw 行为;但通常是 更糟糕的是断言事情没有发生因为它们是不确定的。在继续之前,您应该等待错误多久? :

cy.route({
method: 'POST',
url: '/foos',
onRequest: () => {
throw new Error('Whoops')
}
})
cy.get('.cancel-button').click();
cy.wait(1000) // give it one second to throw, then move on

像这样的断言只会给你的测试增加不必要的时间。这种类型的测试被称为 Conditional Testing as mentioned in the Cypress Docs

关于Cypress.io - 断言没有对 URL 的 XHR 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com