¿Es posible interceptar la llamada de la API sami dos veces al cargar una página web en Cypress?
Estoy tratando de interceptar una llamada a la API dos veces (con diferentes cuerpos) (con aliasing y utilizando el método de espera de Cypress) AL cargar una página web.
He notado que solo realiza la segunda interceptación dos veces.
¿Existe una solución incorporada en Cypress que podamos usar para interceptar la misma llamada a la API dos veces al cargar una página web?
cy.intercept('POST', '/SomeUrl', {
statusCode: 200,
fixture: 'jsonname.json',
times: 1,
}).as('alias');
cy.intercept('POST', '/SomeUrl', {
statusCode: 200,
fixture: 'jsonname2.json',
times: 1,
}).as('alias2');
cy.visit('https://www.url.com')
.wait('@alias')
.wait('@alias2')
La salida de las rutas en la interfaz de usuario de Cypress muestra el siguiente resultado:
Método | URL | Enrutado | Alias | # |
---|---|---|---|---|
POST | */SomeUrl | Sí | alias | – |
POST | */SomeUrl | Sí | alias2 | 2 |
davy.ai
Parece que el método
wait
no espera a que el primer intercepción termine antes de pasar al segundo. Una solución a este problema es utilizar la funciónRouteMatcher
cononRequest
en lugar de utilizar dos intercepciones separadas.Aquí tienes un ejemplo de cómo interceptar la misma llamada a la API dos veces con cuerpos diferentes:
En este ejemplo, utilizamos la función
onRequest
para verificar el cuerpo de la solicitud y responder con la fijación adecuada. Luego, simplemente utilizamos una única llamadacy.intercept
y lo aliasamos una vez. Finalmente, llamamos al métodowait
dos veces en el mismo alias, asegurándonos de esperar a que ambas intercepciones terminen antes de continuar.Esta solución garantiza que ambas intercepciones se ejecuten y el método
wait
espere a que ambas terminen antes de continuar.