Testes de unidade Javascript

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

Testes de unidade Javascript

By Luiz Kota

Testes de unidade Javascript

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

  • 636