DEV Community

Cover image for O que são testes e como funcionam?
Cristian Magalhães
Cristian Magalhães

Posted on • Updated on

O que são testes e como funcionam?

O que é um teste?

Um teste é um trecho de código, que quando executado chama a funcionalidade a qual quer testar e submete ela a um cenário com parâmetros e retornos totalmente controlados por você. Assim você consegue entender como o seu código se comporta em diferentes cenários e como trata-lós, dessa forma trazendo uma qualidade e segurança muito maior para o seu código.

Exemplo prático

Vamos considerar a função abaixo. Uma função que recebe dois números e retorna a soma entre eles.

// index.js
function soma(n1, n2) {
   return n1 + n2;
}
Enter fullscreen mode Exit fullscreen mode

Abaixo um exemplo de um arquivo de teste para a função acima

//index.test.js

const soma = require('./index.js');

describe('Function soma', () =>; {
   it('Quando eu passar 5 e 5 a função deve me retornar 10', () =>; {
      const resultado = soma(5, 5);
      expect(resultado).toBe(10);
   });

   it('Quando eu passar 2 números negativos o resultado deve ser um número negativo', () =>; {
      const resultado = soma(-10, -5);
      expect(resultado).toBe(-15);
   });
});
Enter fullscreen mode Exit fullscreen mode

Podemos ver que a primeira coisa a ser feita é importar a função que iremos testar. Em seguida nós temos uma função chamada 'describe'. Vamos entender o que essa função faz, primeiramente ela recebe 2 parâmetros, uma string e uma função de callback. Essa string é usada para destacar um conjunto de testes a qual ela se refere, nesse caso a função de soma que foi importada. O callback serve para declararmos os casos de teste que são representados por cada 'it' no código. A função 'it' funciona da mesma forma que a função 'describe' ela recebe uma string e uma função de callback como parâmetro. A string serve para sabermos qual é o caso de teste em questão e a função de callback para podermos montar o nosso teste.

Vamos falar sobre o primeiro caso de teste. Nele eu passo o número 5 nos 2 paramêtros da função e pego o resultado na constante resultado. E a mágia dos testes acontece na linha seguinte onde eu faço:

expect(resultado).toBe(10);
Enter fullscreen mode Exit fullscreen mode

O que isso significa? Que eu espero(expect()) que a constante resultado seja igual a 10(toBe()). E caso esteja certo o teste irá passar. caso contrário irá aparecer um erro como na imagem abaixo:

Resultado do teste

E com o feedback desse teste no terminal, nós iremos entender qual será o próximo passo no desenvolvimento do código.

Link para o stack blitz com exemplo

A biblioteca usada para rodar os testes é o jest. Para executar os testes basta rodar no terminal o comando jest ou npm test

Muito obrigado por ler.

Discussion (0)