Felipe Cesar

    Como usar a função describe do Jest?

    A função describe do Jest é usada para criar um contexto para nossos testes. Ela funciona de forma parecida com os testes, recebendo dois parâmetros:

    1. Uma descrição do contexto.
    2. Uma função onde os testes que pertencem a esse contexto devem ficar aninhados.

    O código abaixo mostra como ela pode ser usada.

    describe('aliquotaIR', () => {
      test('retorna a tarifa de 22,5% quando recebe o valor de 180 dias', () => {
        const tempoInvestidoEmDias = 180;
    
        const tarifa = aliquotaIR(tempoInvestidoEmDias);
    
        expect(tarifa).toBeCloseTo(0.225);
      });
    });

    Nesse caso, a descrição do contexto é o nome da unidade que está sendo testada. Além disso, o contexto também fica visível quando executamos os testes.

     PASS  src/__tests__/aliquotaIR.test.ts
      aliquotaIR
         retorna a tarifa de 22,5% quando recebe o valor de 180 dias
    
    Test Suites: 1 passed, 1 total
    Tests:       1 passed, 1 total

    A função it

    O Jest também expõe a função it. Esta função é um alias para a função test, mas se encaixa melhor em termos de sintaxe com essa abordagem usando o describe.

    describe('aliquotaIR', () => {
      it('retorna a tarifa de 22,5% quando recebe o valor de 180 dias', () => {
        const tempoInvestidoEmDias = 180;
    
        const tarifa = aliquotaIR(tempoInvestidoEmDias);
    
        expect(tarifa).toBeCloseTo(0.225);
      });
    });

    Neste caso, podemos entender que o it se refere ao contexto. Sendo assim, podemos ler como uma única frase: aliquotaIR retorna a tarifa de 22,5% quando recebe o valor de 180 dias.

    Contexto dentro de contexto

    Podemos usar o describe para criar outro nível de contexto para explicar o cenário, e o teste abaixo dele.

    describe('aliquotaIR', () => {
      describe('dado o valor de 180 dias', () => {
        it('retorna a tarifa de 22,5%', () => {
          const tempoInvestidoEmDias = 180;
    
          const tarifa = aliquotaIR(tempoInvestidoEmDias);
    
          expect(tarifa).toBeCloseTo(0.225);
        });
      });
    });

    Algumas pessoas podem odiar isso (inclusive eu ) porque os testes ficam mais difíceis de ler a medida eles aumentam, mas é importante saber que você pode separar cada informação em um nível diferente.

    Conclusão

    A função describe pode ajudar quando você quiser criar diferentes contextos dentro do mesmo arquivo, mas é importante tomar cuidado para não deixar os testes difíceis de manter.