Testes de unidade em JavaScript
Tags: javascript, testdev, ptbr
Published: 2021-04-06 13:42:52

O teste de unidade _ou teste unitário_ em JavaScript é um método de teste no qual é testado um código JavaScript escrito para uma página web ou módulo de aplicativo web. Cada um dos testes de unidade servem para testar uma certa funcionalidade. Esses testes são então organizados em suítes de testes.

Cada suíte contém uma série de testes projetados a serem executados para um módulo separado. Eles não devem entrar em conflito com nenhum outro módulo e não devem ter muitas dependências entre si.

Para evitar desafios no momento de realizar testes de unidade as seguintes diretrizes são úteis:

* Não use variáveis ​​globais
* Não manipule objetos predefinidos
* Escreva funcionalidades core baseadas em bibliotecas
* Tente criar pequenas funcionalidades com menos dependências

**Melhores frameworks de teste de unidade de JavaScript**

1. [Unit.js](http://unitjs.com/): é conhecido como uma biblioteca de asserção de código aberto em execução no navegador e Node.js. É extremamente compatível com outra estrutura de teste de unidade de JavaScript como Mocha, Karma, Jasmine, QUnit, Protractor, etc. Fornece a API documentada completa da lista de asserções

2. [QUnit](https://qunitjs.com/): é usado para testes de unidade de JavaScript do lado do cliente e do lado do servidor. Este framework gratuito de teste JavaScript é usado para projetos jQuery. Ele segue a espeficação de teste de unidade da CommonJS.

3. [Jasmine](https://jasmine.github.io/): Jasmine é o framework de desenvolvimento orientado a comportamento para testar código JavaScript. É usado para testar código tanto síncrono como assíncrono. 

4. [Karma](https://karma-runner.github.io/2.0/index.html): Karma é um ambiente open source de testes. Controle fácil do fluxo de trabalho executando na linha de comando. Oferece a liberdade de escrever testes com Jasmine, Mocha e QUnit. Você pode rodar os testes em dispositivos reais com um debbugging fácil.

5. [Mocha](https://mochajs.org/): Mocha é executado em Node.js e no navegador. O Mocha realiza testes assíncronos de uma maneira mais simples. Fornece precisão e flexibilidade nos relatórios. Fornece um bom suporte de features como test-specific timeouts, JavaScript APIs etc.

6. [Jest](https://jestjs.io/): Jest é usado pelo Facebook até agora para testar todo o código JavaScript. Ele fornece a experiência de teste de 'configuração zero'. Suporta teste de execução independente e sem interrupção, evitando qualquer conflito. Não requer nenhuma outra configuração de instalação e outras bibliotecas.

7. [AVA](https://github.com/avajs): AVA é um framework de teste de unidade JavaScript simples. Os testes são executados em paralelo e em série. Os testes paralelos são executados sem interromper um ao outro. AVA também oferece suporte a testes assíncronos. AVA usa subprocessos para executar o teste de unidade.

**Conclusão**

Você deve sempre manter três coisas em mente ao realizar o teste:
 1. O recurso que precisa ser testado; 
 2. A saída desejada para o teste;
 3. A saída retornada no teste; 

Os frameworks mencionados acima ajudam nessa tarefa, mas para facilitar seu trabalho sempre faça a implementação do código de modo a tornar fácil de ser garantido a sua eficácia.