Luiz Kota
Tech Lead na Catho. Busca o constante aprimoramento profissional estudando tudo relacionado a desenvolvimento web.
com mocha, chai e istanbul
Testes de unidade
O que é?
- Testes focados em uma unidade específica do sistema
Benefícios
- Melhora da arquitetura do software
- Incentiva a refatoração
- Código mais limpo
- Aumenta a cobertura de teste
- Manutenção com segurança
- Documentação da funcionalidade
Mocha
O que é?
- Framework de testes javascript
- Roda com node.js
Documentação
- http://mochajs.org
Por que usar o Mocha?
- Permite descrever os cenários de testes de maneira muito simples
- É facilmente integrado a qualquer ferramenta de deploy como o jenkins ou o travis
- Projeto já está maduro
- versão 2.3.3
- mais de 3 anos de existência
- Comunidade ativa
- 231 colaboradores
- 111 issues
- 22 pull requests
Doc Mocha
Chai
O que é?
- Biblioteca de BDD/TDD com javascript
- Integra facilmente com o mocha
Documentação
- http://chaijs.com/
Por que usar o Chai?
- Sintaxe muito simples e intuitiva
- Facilidade de entendimento do código por terceiros
- Documentação detalhada com exemplos
- Projeto maduro
- versão 3.3.0
- mais de 2 anos
- Comunidade ativa
- 83 contribuidores
- 45 issues
- 7 pull requests
Doc Chai
Istanbul
O que é?
- Ferramenta de code coverage
- Escrito em javascript
Documentação
- https://gotwarlost.github.io/istanbul/
Istanbul
Relatório de coverage gerado pelo istanbul
Istanbul
- Statements: Instruções de comando
- Branches: Divisões de lógica
- Functions: Funções e métodos
console.log("Exemplo de statement");
var teste = "Outro exemplo";
if (isValid || isExecption) {
// Exemplo com 2 branches
}
function teste() {
// exemplo função
};
var Teste = {
teste: function() {
// outro exemplo função
}
}
Setup | instalando dependências
{
"devDependencies": {
"istanbul": "*",
"mocha": "*",
"chai": "^3.2.0"
}
}
Package.json
npm install
Instalando dependências
Ou instalando as dependências manualmente
npm install --save-dev mocha
npm install --save-dev chai
npm install --save-dev istanbul
Setup | importando as dependencias
// Dependencies
var chai = require("chai"),
expect = chai.expect,
should = chai.should();
// Code
var unit = require("./../examples.js").ExamplesCode;
examplesTest.js
Escrevendo testes | mocha
describe(
'Descrição do cenário de teste',
function() {
// testes
}
);
Descrevendo um cenário de teste
describe(
'Descrição do cenário de teste',
function() {
it(
'Teste',
function() {
// asserts
}
);
}
);
Declarando um teste
Escrevendo testes | chai
describe(
'Descrição do cenário de teste',
function() {
it(
'Teste',
function() {
expect({a: true}).to.be.an('Object');
}
);
}
);
Asserts com expect
describe(
'Descrição do cenário de teste',
function() {
it(
'Teste',
function() {
{a: true}.should.be.an('Object');
}
);
}
);
Asserts com should
Executando a suite de testes
mocha
// ou
mocha directory
Mocha
istanbul cover _mocha
// ou
istanbul cover _mocha directory
Mocha com istanbul
// Package.json
{
"scripts": {
"test": "istanbul cover _mocha"
}
}
// Command
npm test
Npm task
Referências
- http://blog.caelum.com.br/unidade-integracao-ou-sistema-qual-teste-fazer/
- http://andrethiago.com/2011/04/06/as-vantagens-do-teste-unitario/
- http://mochajs.org/
- http://chaijs.com/
- https://gotwarlost.github.io/istanbul/
- http://ricostacruz.com/cheatsheets/chai.html
LIVE CODE
Dúvidas?
Links
- Apresentação: https://slides.com/luizkota/testes-de-unidade-javascript-com-mocha-chai-e-istanbul
- Código: https://github.com/luizdesign/unit-tests-with-mocha-chai-and-istanbul
Contato
- E-mail: luiz.kota@catho.com
By Luiz Kota
Testes de unidade com o framework Mocha e a biblioteca Chai, apresentando desde o que é cada um, como realizar o setup e iniciar com os testes
Tech Lead na Catho. Busca o constante aprimoramento profissional estudando tudo relacionado a desenvolvimento web.