Estoy tratando de interceptar una solicitud de recuperación y afirmar que los parámetros de carga/consulta son correctos. He buscado en la documentación de Cypress, pero todo lo mencionado está configurando parámetros de consulta. Yo, por ejemplo, necesito afirmar que una solicitud de búsqueda como https://helloWorld.com/proxy/service tiene parámetros de consulta /carga útil de ?service=request&layers=demo . ¿Hay alguna forma de hacer esto?
He intentado casi todo, pero algo similar a esto es lo que estoy buscando. ¿Algunas ideas?
cy.location("https://helloWorld/proxy/service").should((loc) => { expect(loc.search).to.eq('?service=request&layers=demo') })La configuración de una intercepción puede verificar la forma de la solicitud
cy.intercept('https://helloworld.com/proxy/service').as('requestWithQuery') // trigger the request cy.wait('@requestWithQuery').then(interception => { expect(interception.req.body.query.includes('service=request').to.eq(true) }) No estoy seguro de si la afirmación anterior es exactamente lo que necesita, pero coloque un console.log(interception.req) para verificar lo que necesita afirmar.
La intercepción también puede especificar la consulta.
cy.intercept({ pathname: 'https://helloworld.com/proxy/service', query: { service: 'request', layers: 'demo' }, }).as('requestWithQuery') // trigger the request cy.wait('@requestWithQuery') Por cierto, su uso de cy.location() es incorrecto, usaría
cy.location('search').should('eq', '?service=request&layers=demo') // or cy.location().should((loc) => { expect(loc.href).to.eq( 'https://helloworld/proxy/service?service=request&layers=demo' ) }) Pero la aplicación ya tendría que haber navegado a https://helloWorld/proxy/service y no está claro a partir de su pregunta si eso está sucediendo.
Captura de "helloWorld/proxy/service"
Cuando su aplicación usa fetch , la URL se convierte a minúsculas.
Entonces, enviar fetch('https://helloWorld/proxy/service') puede ser interceptado con
cy.intercept('https://helloworld/proxy/service') // all lower-case urlHay una pista en el registro de Cypress, la recuperación registrada se muestra como todos los caracteres en minúsculas
(buscar) OBTENER https://helloworld/proxy/service
BaseUrl e intercepción
Cuando baseUrl es un dominio diferente del nombre de host de intercepción, puede especificarlo con una opción adicional, aunque en la práctica descubrí que también funciona con la URL completa, como se muestra arriba.
cy.intercept('/proxy/service*', { hostname: 'https://helloworld' })