我是柏树的初学者。我一直在寻找一种方法来拦截对多个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
})