如何仅获取最后拦截的API

时间:2021-07-05 08:48:19

标签: cypress

我正在使用 cy.intercept() 截获一个 API,看起来这个 API 被调用了两次,因此它被截获了两次,并有不同的响应。我只想访问最后截获的一个。我该怎么做?

cy.intercept({
    url: `${Cypress.config().apiUrl}/ticket`,
    method: 'GET',
}).as('assignedTicketAPI')

screenshot

1 个答案:

答案 0 :(得分:0)

最近有一个问题 How to match intercept on response,是关于在同一个拦截中处理多个请求。

如果路由匹配参数相同,您可以在同一个拦截别名上等待两次。

cy.wait('@assignedTicketAPI')
cy.wait('@assignedTicketAPI').then(interception => {...

还可以对拦截中的请求进行计数,并为第二个捕获的请求分配唯一别名 - Aliasing individual requests

let intercepted = 0
cy.intercept({
  url: `${Cypress.config().apiUrl}/ticket`,
  method: 'GET',
}, (req) => {
  intercepted = intercepted + 1
  if (intercepted  === 2) {
    req.alias = 'assignedTicketAPI2'
  }
})

cy.wait('@assignedTicketAPI2').then(interception => {...