Como fazer testes unitários no Node.js com NodeUnit

Como fazer testes unitários no Node.js com NodeUnit

26 de março de 2019 1 Por Ramos de Souza Janones
Como vender Software - Seja desktop, web ou MobilePowered by Rock Convert
Powered by Rock Convert

Neste artigo vamos falar como fazer testes unitários (TDD) no framework Node.js utilizando NodeUnit. No final, apresentar outros frameworks de testes.

Existe no Node.js um módulo chamado Assert, mas não é uma ferramenta completa para testes unitários mas é possível utilizá-lo sem nenhum adicional para realizar seus testes.

Vamos compreender o módulo Assert do Node

Assert do Node.js possui os seguintes métodos:

  • fail: Compara dois valores (estilo atual e esperado).
  • ok: Confere se a expressão passada é verdadeira.
  • throwsdoesNotThrow: A função passada deve/não deve lançar uma exceção.
  • ifError: Testa se o valor passado é verdadeiro; útil para testar variável de erros.

Além de vários métodos equalequalnotEqualdeepEqualnotDeepEqualstrictEqualnotStrictEqual.

Teste unitário com NodeUnit

O Nodeunit é um dos primeiros frameworks lançado para o Node.js, e possui uma comunidade extensa contribuindo para melhorias nesse projeto. Algumas características do Nodeunit são:

  • Criação de testes unitários sobre o seu código de forma simplicada.
  • Suporte para elaboração de testes assíncronos.
  • Criação de casos de testes.
  • Execuções de funções de setUp (antes de um testes) e tearDown (depois de um teste).
  • Apresentação dos resultados dos testes no console e no browser.
  • Integração com Mocks e Stubs.
  • Exportação dos resultados para HTML ou JUnit XML.

Para instalá-lo é simples:

npm install -g nodeunit

Métodos

Os métodos para teste são os mesmos do assert descritos acima. Além deles, para cada função de teste o nodeunit lhe envia um objeto com as seguintes funções:

  • expect(quantidade): Número de asserções que será feita neste teste. Se um número de asserções diferentes do passado for feita o teste falha. A chamada desta função é opcional.
  • done: Termina o teste atual. Esta função deve ser chamada.

Escrevendo o módulo de teste

Para escrever um módulo de teste é muito simples, basta expor suas funções de teste e receber nelas um paramêtro com o objeto test do nodeunit, exemplo:

Powered by Rock Convert
exports.testaAlgo = function (test) {
    test.expect(2);
    test.ok(true, "este teste irá passar");
    test.ok(false, "este teste irá falhar e essa mensagem será exibida");
    test.done();
};

Executando os testes

Basta instalar o nodeunit via npm:

npm install -g nodeunit

E depois executar o teste:

nodeunit meuTeste.js

A saída é algo do tipo:

$ nodeunit meuTeste.js
 testaAlgo

Assertion Message: este teste irá falhar e essa mensagem será exibida

Configurando os testes unitários no projeto

Uma das formas de configurar seus testes no seu projeto é utilizar o package.json, exemplo:

"scripts": {
  "test": "nodeunit testes/*.js"
}

Desta maneira basta executar npm test para executar seus testes.

Para não ter que instalar o nodeunit de maneira global em sua máquina (paramêtro -g do npm install), pode-se utilizar o nodeunit local da pasta node_modules:

"scripts": {
  "test": "./node_modules/.bin/nodeunit testes/*.js"
}


Outras ferramentas TDD para Node.js

Esse framework possui muitas funcionalidades úteis que vale a pena estudar a fundo para montar um ambiente de testes em seu projeto Node.js. Lembrando que esse foi um exemplo com apenas um framework, e hoje já existem novos frameworks de testes para Node.js, para melhores detalhes segue abaixo os links:

Conheça nossas categorias: MundoJS, Node, e JavaScript

Powered by Rock Convert
Siga os bons!
Últimos posts por Ramos de Souza Janones (exibir todos)
vote
Article Rating
LEIA TAMBÉM:  Novidade no formatador de código Prettier