Thursday, June 30, 2022
HomeWordPress DevelopmentTestando datas mais facilmente com Jest

Testando datas mais facilmente com Jest


Quem desenvolve em Javascript | Typescript (e outras linguagens também 😜) sabe a dor de cabeça que é trabalhar com datas.

Uma coisa é certa, do juninho ao sênior em algum momento você vai precisar formatar uma knowledge (e não vai saber 😬) ou vai ficar (muito) estressado porque o diabo da knowledge que você criou está ficando com 3 horas a menos (kkk).

O primeiro problema é regular. Já o segundo se deve a forma como o Node trabalha com timezones. Nesse caso, ao criar um objeto Date com o comando new Date('2022-05-21') e tentar utilizar algum método como .toString(), o Node vai trazer esse valor acrescido (ou subtraído) do valor timezone da nossa máquina (normalmente aqui no Brasil seria de -3 horas). Por isso ocorre de criarmos uma knowledge e ao tentarmos exibí-la, o valor retornado ser a knowledge do dia anterior às 21h.

Exemplo:

const date = new Date('2022-05-21')

date.toString() // deveria retornar Sat Might 21 2022 00:00:00
// mas retorna Fri Might 20 2022 21:00:00
Enter fullscreen mode

Exit fullscreen mode

Para resolver esse problema na execução de testes com Jest e evitar programações alternativas 🤭, podemos fazer uma simples configuração que lhe salvará vários fios de cabelo.

Vamos lá. Primeiramente precisamos criar um arquivo de configuração world para o jest (não é o jest.config). O nome não importa mas nesse exemplo vamos chamá-lo de globalJestSetup.ts e ele terá uma simples função exportada como default.

globalJestSetup.ts

Nesse arquivo estamos simplesmente dizendo para o Jest sempre utilizar a timezone UTC, assim ao trabalhar com datas não haverá o problema de termos o valor diferente dependendo da timezone.

Feito isso agora só precisamos adicionar esse arquivo nas configurações do Jest (no arquivo jest.config) como mostrado na imagem abaixo, utilizando o atributo globalSetup:

jest.config.ts

Lembrando que o nome que você deu ao arquivo deve ser igual ao usado na configuração do Jest.

E é basicamente isso. Agora ao fazer seus testes, as datas sempre terão o valor que você esperava hehe, independente do ambiente em que eles sejam executados.

Bônus:
Você pode adicionar um teste que verifica se essa configuração funcionou realmente:

timezone.test.ts

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments