Emmanuel Rodríguez
Jairo Campos Ruiz
David Burgos
Javier Fuentes Mora
ProfesorDavid steven Abril Pulecio
Geovanni Atavales Quiroga
Request Polling
. 📚 Documentación .
Se conoce al polling como el evento de uso continuo de recursos administrados.
. En ocasiones, tenemos que utilizar múltiples pruebas sobre un caso de uso por el uso DRY o Don't Repeat Yourself. . Para ello, una buena práctica en Cypress es la generación de módulos y uso de alias.
const findEmployees = (response: any) => { expect(response.status).to.eq(200) expect(response.body).to.be.an('array') response.body.forEach((employee: IEmployee) => { expect(employee).to.have.property('name') expect(employee).to.have.property('email') }) } describe("Testing blocks", () => { it('should be success and valid response', function () { cy.request("/employees").as("employees") cy.get("@employees").should((response: any) => { expect(response.status).to.eq(200) }) cy.get("@employees").should((response: any) => findEmployees(response)) }) })
Si quereis validar el body completo en vez de con be.equal se hace con deep.equal para que compare internamente el objeto
Así con el its:
cy.request("employees/1").its("body").should("deep.equal", { id: 1, first_name: "Roseanna", last_name: "Ryland", email: "rryland0@omniture.com", gender: "Female", });
Así con el then:
cy.request("employees/1").then((response) => { expect(response.body).to.be.deep.equal({ id: 1, first_name: "Roseanna", last_name: "Ryland", email: "rryland0@omniture.com", gender: "Female", }); });
Probé a realizar las aserciones con el uso de expect() y con el .wrap() de esta manera:
describe('Probando el Body', () => { it('Validar el body', () => { cy.request('employees/1') .its('body') .its('first_name') .should('eq', 'David') cy.request('employees/1').then(res => { //Using expect expect(res.status).to.be.equal(200) expect(res.headers['content-type']).to.be.equal('application/json; charset=utf-8') expect(res.body['first_name']).to.be.equal('David') //Using wrap para obtener la sintaxis normal de cypress cy.wrap(res).its('status').should('eq', 200) cy.wrap(res).its('headers').its('content-type').should('include', 'application/json') cy.wrap(res).its('body').its('first_name').should('eq', 'David') }) }) })
y que te pareció David ? cual te gusto más ?
Excelente aporte, gracias pero la seccion:
expect(res.headers['content-type']).to.be.equal('application/json; charset=utf-8')
No funcionó, asi que removi el charset como correccion para la version de cypress 2025 quedaria asi:
expect(res.headers['content-type']).to.be.equal('application/json')
Muchas de estás pruebas también se puede generar con Postman, pero me parece interesante que puedan convivir con pruebas de UI en un sólo proyecto.