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 2 Por Ramos de Souza Janones
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:

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:

Curso completo de Games, inclusive Realidade Aumentada.Powered by Rock Convert
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

Artigos relacionado a Javascript

Artigos e dicas sobre Javascript e toda sua familia: Node.js, Angular, Ionic, React e muito mais.

– GitHub lança repositórios privados gratuitos para até três colaboradores

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

– Epoc.js: Projeto open source em JavaScript para Sensores de Controle Cerebral

– Migre para o Ionic Framework 4 mais fácil usando o TSLint Fixers

– Apollo lança a Plataforma GraphQL e extensão para VS Code

– As novidades do Angular 7

– Tecnologias que andam bombando no GitHub ultimamente

– Node.JS: Envie o gemidão do Whastzap para seus amigos via chamada telefônica

– Southbank Software apresenta dbKoda: uma ferramenta de desenvolvimento Open Source para MongoDB

– Começando com React Native

– React Native Do Zero Ao Profissional, Curso Sobre Criação De Apps React Native Para Android e IOS

– React: Tutoriais Fantásticos e Onde Habitam

– React – O que é Shadow DOM

– O que são middlewares em NodeJS?

– Conhecendo os super poderes dos comandos Git e GitHub

Web

Artigos e dicas sobre desenvolvimento web que você vai gostar:

– 6 TENDÊNCIAS DE UX DESIGN PARA OS PRÓXIMOS ANOS

– UX – User Experience ou Experiência do Usuário – Princípios

– Usabilidade: Tela com muitas informações ou distribuídas em várias telas?

– Entenda as diferenças entre Wireframe, Protótipo e Mockup?

Estatísticas de SEO, novas regras do Google para 2019 e Automação de Marketing Digital

– Bootstrap – O que são grids CSS

– Quando usar ANSI e quando usar UTF-8

– W3C anuncia o DRM como uma recomendação

– Crie um loading animado divertido usando CSS3

– Como descobrir se uma cor hexadecimal é escura ou clara

– Como usar tags semânticas

– O que é o GZIP e como melhora a velocidade de um site

– Como adicionar notificações (Push notification) em seu site

 

LEIA TAMBÉM:  Entendendo Bootstrap

Banco de dados

Artigos e dicas sobre banco de dados que você vai gostar:

MongoDB

– Principais diferenças entre MongoDB e MySQL ou outro RDBMS

– Southbank Software apresenta dbKoda: uma ferramenta de desenvolvimento Open Source para MongoDB

MySQL e Instruções SQL em geral

– SQL e Regex – Entenda quando e como usar em instruções SQL

– MySQL – Manter o formato Date e DateTime em formato dd/mm/Year e dd/mm/Year:HH:mm:ss

– SQL – O que são VIEWS SQL, vantagens e desvantagens

– Instrução Insert MySQL e JSON com todos os bancos brasileiros

– PHP e MySQL – Entendendo as codificações iso-8859-1 e UTF-8 e outras

– Como redefinir a senha de root do MySQL ou do MariaDB

– Para que serve uma MySQL Transaction?

– Banco de Dados – Índices desnecessários no banco são um problema?

– Entenda a diferença entre LIKE, IN e BETWEEN no MySQL

– LinkedIn desenvolve a ferramenta MySQL Query Analyzer

– Como otimizar consultas MySQL

– Quando é interessante desnormalizar o banco de dados?

– Entenda Views em SQL, vantagens e desvantagens

– O que é normalização de banco de dados

– Por que não devemos usar funções do tipo mysql_*

SQL – Entenda as diferenças entre aspas simples e duplas

– SQL – Not IN ou Not EXISTS quando usar?

– SQL – Entendendo JOINS

– PHP Do Zero Ao Profissional – Análise do Curso

 

LEIA TAMBÉM:  Entenda as diferenças entre Wireframe, Protótipo e Mockup?

Série Sucesso com App:

Série Startup, Vida e Sucesso:

– Dicas para pagar menos Impostos e economizar dinheiro com fintechs

– Livros sobre independência financeira, finanças pessoas e finanças empresariais que vão mudar sua vida

– Estatísticas de SEO, novas regras do Google para 2019 e Automação de Marketing Digital

– 5 livros Indispensáveis para Startups em fase de Captação de Recursos

– App de Sucesso – Parte 7 – Formas de monetização de Aplicativos e plano de negócios

– 22 Livros de Marketing Digital para ler em 2019

– 15 livros de empreendedores excepcionais para ler em 2019

– 5 passos para criar um canal no YouTube para sua empresa

– App marketing: virando o jogo com ajuda de machine learning

– 5 lições que o Vale do Silício ensina para startups brasileiras

Promova seu APP em seu site e parceiros com o Smart App Banners

– 7 E-Books Indispensáveis sobre Marketing Digital

– 110 ferramentas gratuitas para empreendedores e startups

Melhorando o desempenho cognitivo em empresas de TI

– Os sete passos para construir uma empresa de desenvolvimento de software de sucesso

– Apps Mobile: estratégias para ter sucesso e sobreviver no mercado

– SLACK: CONHEÇA A FERRAMENTA QUE REVOLUCIONOU A INTEGRAÇÃO E A PRODUTIVIDADE DE EQUIPES

– Criação de Startups – Parte 1: O comportamento do empreendedor

– Os Segredos de uma Startup de Sucesso

– O segredo do Google (e de outras empresas) para manter um time mais focado e produtivo

Google ensina como criar aplicativos de sucesso.

– A história, esquecida, da Netflix e suas lições

12 sites para criar Infográficos incríveis!

– 12 dicas para melhorar sua produtividade (seus objetivos chegarão mais rápido)

– Qualidade de Software: Uma questão de eficiência.

Powered by Rock Convert
Curso de Inglês para Programadores.Powered by Rock Convert

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.