Teste automático de API REST com Node.js + Mocha + Chai
API REST já é parte obrigatória da maioria dos projetos que fazemos hoje em dia, e poder dormir tranquilo sabendo que nossos endpoints estão funcionando corretamente é parte do trabalho.
Para isso, automatizar os testes é crucial.
Neste artigo listarei os passos que realizei para criar meu primeiro teste automatizado utilizando Node.js, o test framework Mocha e o Chai, que é a lib que nos ajuda a escrever os testes.
Instalação
Todos os passos descritos abaixo foram realizados em um PC rodando Windows 10 e MinGW, mas tirando proveito da portabilidade das ferramentas, não deve ser muito diferente nas outras plataformas.
Primeiro de tudo, instale o Node.js, você pode baixar no site oficial, e após instalação, abra o terminal e execute o comando para verificar a versão.
$ node -v
$ v9.5.0
próximo passo, criar a pasta onde nosso código será armazenado
mkdir teste_api
cd teste_api
Uma vez dentro da pasta, vamos iniciar o processo de criação do projeto
npm init
É possível já informar informações sobre o projeto, mas eu deixarei tudo padrão, no final digite yes para finalizar o processo e criar o arquivo package.json em sua pasta.
O conteúdo do arquivo package.json será algo como este
Para aqueles que não conhecem, este arquivo guarda todas as referências as dependências que utilizarmos, assim, um outro desenvolvedor pode baixar o projeto e instalar tudo o que for necessário de forma automática.
Agora vamos instalar os itens que precisamos para realizar os testes
npm install mocha -g --save-dev
npm install chai --save-dev
npm install should --save-dev
npm install request --save-dev
Os pacotes instalados são:
- Mocha — Test Framework
- Chai — Teste Framework
- Should — Biblioteca para extender os testes
- Request — Para realizar as chamadas na API
Neste Momento todas as dependências estarão armazenadas no package.json e uma nova pasta chamada node_modules foi criada e armazena todos os pacotes e dependências do projeto.
Criando a estrutura do projeto.
Mocha roda automaticamente os testes que obviamente estão dentro da pasta p̶a̶d̶a̶r̶i̶a test, então vamos criar esta pasta
mkdir test
O que vamos testar?
Para realizar os testes eu vou utilizar a api que retorna informações sobre cartas de Magic the Gathering (que eu gosto muito diga-se de passagem).
Esta api é REST FULL então podemos testar vários diferentes cenários, o que é bem legal para aprenderemos os conceitos (mas nesse tutorial, darei apenas a introdução, o resto é com você).
Escrevendo o teste
Agora utilizando seu editor de texto favorito (o meu é o Sublime) vamos criar nosso primeiro teste.
Como eu disse antes, o mocha roda todos os arquivos que estão na pasta test, então vamos criar nosso primeiro teste, para isso vamos criar o arquivo card.spec.js que terá a seguinte estrutura.
Executando
Para rodar os testes, basta digitar mocha na pasta raiz do projeto
mocha
O resultado do teste será como o abaixo (em caso de sucesso)
Simulando um erro (comparando 400 com 200 no resultado do primeiro teste) teremos
Finalizando
Claro que não entrei nos detalhes das funçõe do Chai, mas este post é para dar uma idéia da estrutura e do que é necessário para o teste.
Veja que os comentários no código ajudam no entendimento e a documentação do Chai é bem rica.
O projeto pode ser baixado no github.
Qualquer coisa me chama no twitter