有没有办法拦截由"OR"条件运算符链接的多个请求?



我是柏树的初学者。我一直在寻找一种方法来拦截对多个URL中至少一个URL的API调用。假设点击一个按钮,执行类似于以下代码的操作,以检查是否调用了请求列表:

cy.get('@request1').should('have.been.called').log(`Request was made to 'REQUEST1_URL'`) 
OR 
cy.get('@request2').should('have.been.called').log(`Request was made to ''REQUEST2_URL'`)

我想检查一个请求是发送到一个url还是另一个url,或者两者都发送。

以前有人遇到过这个问题吗?感谢您的任何贡献。谢谢

您在拦截中使用的URL应该足够通用,可以捕获这两个调用。

例如,如果调用有共同的/api/,这将捕获两个

cy.intercept('**/api/*')   // note wildcards in the URL
.as('apiRequest')
cy.visit('/')
cy.wait('@apiRequest')

如果url中的路径比需要捕获的路径多,例如/api/dogs//api/cats//api/pigs/,则使用函数来剔除需要的路径

cy.intercept('**/api/*', (req) => {
if (req.url.includes('dogs') || req.url.includes('cats') {   // no pigs
req.alias = 'dogsOrCats'                                   // set alias
}
})
cy.visit('/')
cy.wait('@dogsOrCats')

捕获0、1或2个URL

这有点棘手,如果不知道通话次数,那么你必须知道通话时间。

要捕获请求,应用会很快解雇您

let count = 0;
cy.intercept('**/api/*', (req) => {
count = count +1;
})
cy.visit('/')
cy.wait(3000)   // wait to see if calls are fired
cy.then(() => {
cy.wrap(count).should('be.gt', 0)  // 0 calls fails, 1 or 2 passes
})

最新更新