Mocha
Mocha é uma suitcase para execução de scripts de teste em Javascript e tem como objetivo a execução de uma coleção de scripts. Como utilizaremos na AGES o sistema operacional windows, vou descrever o passo a passo que realizei para instalar o mocha no windows, porém em linux/iOS é bem mais fácil.
Instalando Mocha a partir do "npm init":
Conforme imagem abaixo, um dos parâmetros durante a inicialização de um projeto node é para a definição do comando que será utilizado para rodar os testes, basta preencher este parâmetro com "mocha".
Ao fim da instalação será gerado nosso arquivo package.json e ele estará já com nosso campo de "scripts" preenchido:
Porém, mesmo desta forma, é necessário realizar a instalação do mocha via npm install: ``` npm install mocha --save ``` Ou, para realizar em ambiente de apenas desenvolvimento ``` npm install mocha --save-dev ``` Feito isso teremos dentro da nossa pasta de dependências uma pasta do mocha
Também teremos dentro de nosso package.json a dependência referenciada:
Instalando Mocha em um projeto já existente
A instalação do Mocha em um projeto já existente só possui uma tarefa diferente do init, ao realizar o npm install do Mocha não será incluido lá na nossa "tag" de "scripts test" que utilizaremos mocha para executar nossa bateria de testes. Então basta entrar no arquivo package.json e modificar a tag que ao invés de possuir "test" : "mocha" está preenchida desta forma:
Basta deixar exatamente como estaria caso tivéssemos feito por npm init: ``` "test" : "mocha" ``` Importante! É necessário realizar o npm install do mocha, sem ele no nosso projeto não adianta referenciar ele!
Executando o Mocha Agora que o mocha já está configurado para executarmos ele, falta fazer apenas mais uma coisa... Por padrão o mocha procura pela pasta ".\test" na raiz de nosso projeto, por tanto, será necessário criar uma pasta "test", além disso será necessário criar um arquivo no template de um script para o mocha. Abaixo o exemplo de um script de teste:
Onde:
describe é um comando para representar o nome de um cenário de testes, por exemplo, possivelmente teremos um cenário de testes para Menores e para cada fragmentação do nosso projeto.
it representa um caso de teste, ou seja, uma pequena fração do nosso cenário por completo, por exemplo, no nosso projeto podemos ter uma rota node que traria um Menor e outra que cadastraria um menor, talvez uma delas deva retornar um númerico e outra retornar um JSON, neste caso teriamos dois 'it' dentro de um 'describe' chamado 'BateriaTesteMenores'. Importante, o # não é obrigatório perante a linguagem, mas auxilia na hora de olhar no console o resultado.
Pronto! Agora que temos nosso script de teste podemos finalmente executar o mocha, yey... Talvez não tão yey, mas é isso aí mesmo, enfim, para executar a bateria de testes com tudo configurado, basta colocar no prompt, no diretório raiz do seu projeto, o seguinte comando:
``` npm test ``` Com este comando estamos falando para o node package manager um "ae, executa aquele cara que deveria cuidar dos testes e que está especificado no meu package.json" e o resultado será:
Pronto, finalizado o basicão que consegui fazer de mocha, mais informações no site oficial dos caras: ``` Site do Mocha: https://mochajs.org/ ``` Expect.js --
Expect.js é uma API para auxiliar na implementação de scripts de teste, que contém uma vasta coleção de predicados para isso. Eu realmente pensei em fazer uns testes giga aqui, porém realmente acredito que isso fugiria um pouco do conceito, então vou simplesmente mostrar como é realizada a instalação do expect, fazer um caso base e apresentar um script de teste rodando com ele e os comandos simples dele, e conforme o projeto for acontecendo eu vou anexando um ou outro script de teste como exemplo aqui nesta page.
Instalando Expect.js
A instalação do Expect é bem similar a de uma biblioteca normal do node que será utilizada em tempo de execução, ou seja, dentro de um arquivo script, por tanto basta executar o comando abaixo:
npm install expect.js --save
Realizado o comando podemos adicionar a biblioteca a uma variável local dentro do nosso script de teste a partir do comando:
var expect = require('expect.js');
Após isso, basta utilizar os comandos da API. No nosso caso, quando tivermos algum código operante, teremos possivelmente um arquivo que gerará nossa app configurada, incluindo já as suas rotas, com isso será possível validar se uma rota é válida ou inválida a partir de dados parâmetros, assim que tivermos scripts de teste mais complexos eu vou adicionando eles aqui. Segue um exemplo bem simples dentro da pasta ".\test":
mochaexpectexemplo.zip
Lembrando que para instalar o projeto será necessário realizar um:
npm install
E para executar os testes um:
npm test
Para mais informações sobre o expect.js, basta entrar na wiki dos caras:
Wiki oficial do expect.js: https://github.com/Automattic/expect.js