No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Validando el body

7/17
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

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: "[email protected]",
      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: "[email protected]",
        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')

    })
    
  })


})

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.