Aguarde...

16 de novembro de 2023

Como filtrar dados JSON com Cypress

Como filtrar dados JSON com Cypress

Fazemos testes de API para garantir que a funcionalidade e a confiabilidade do seu aplicativo estejam corretas. Ao testar as respostas das chamadas REST, você precisa filtrar os dados de resposta JSON para extrair as informações relevantes.

Introdução

Já escrevi em agosto que podemos fazer testes de API Rest com Cypress. Ao trabalhar com APIs, é essencial extrair dados específicos das respostas JSON para validar o comportamento da sua aplicação. Vejamos como você pode fazer isso.

Fazendo uma solicitação de API

Antes de mergulhar na filtragem de dados JSON, explico como fazer uma solicitação de API usando Cypress. O cy.request()comando permite enviar solicitações HTTP e armazenar as respostas para processamento posterior. Aqui está um exemplo de como fazer uma solicitação de API:

cy.request({
  method: 'GET',
  url: 'https://api.example.com/data',
}).as('apiResponse');

Este código envia uma solicitação GET para o URL especificado e dá o alias da resposta como apiResponse. Usaremos esse alias para trabalhar com os dados de resposta. Você pode encontrar mais informações em uma postagem anterior do blog.

Filtrando dados JSON

Depois de obter a resposta da API, você pode filtrar os dados JSON para extrair as informações necessárias. Vamos considerar uma resposta JSON contendo um array de objetos, cada um com diversas propriedades:

[
  { "id": 1, "prio": 1 },
  { "id": 2, "prio": 2 },
  { "id": 3, "prio": 1 },
  // ...
]

Para filtrar objetos com base na propriedade prio igual a 3, você pode usar o método filter. Veja como você pode fazer isso:

cy.get('@apiResponse').then((response) => {
  // Use the filter method to get all objects with prio equal to 1
  const objs = response.body.filter((item) => item.prio === 3);
  // Now you can work with the filtered objects
  cy.log('Objects with prio 1:', objs);
});

Tratamento de dados aninhados

As respostas JSON podem ter estruturas complexas com dados aninhados. Digamos que sua resposta JSON inclua objetos com um objeto cliente aninhado e você queira filtrar com base na propriedade name dentro do objeto cliente:

[
  {
    "id": 1,
    "client": {
      "name": "Name1"
    }
  },
  {
    "id": 2,
    "client": {
      "name": "Name1"
    }
  },
  {
    "id": 3,
    "client": {
      "name": "Name2"
    }
  },
  // ...
]

Para filtrar objetos com base na propriedade name dentro do objeto cliente, você pode adaptar o código de filtragem assim:

cy.get('@apiResponse').then((response) => {
  // Use the filter method to get all objects with client name equal to "Name1"
  const objs = response.body.filter((item) => item.client && item.client.name === 'Name1');
  // Now you can work with the filtered objects
  cy.log('Objects with client name "Name1":', objs);
});

Este código irá filtrar e registrar todos os objetos com um objeto cliente contendo a propriedade name igual a “Name1”.

Conclusão

Ao fazer solicitações de API e usar o método de filtro, você pode extrair e trabalhar facilmente com os dados relevantes em suas respostas JSON.

Postado em BlogTags:
Escreva um comentário