TESTES UNITÁRIOS 
Testando uma aplicação AngularJS utilizando o Karma
HENRIQUE LIMAS 
google.com/+HenriqueRamosLimas 
github/HenriqueLimas 
henriquelimas.github.io
ANGULARJS
FRAMEWORK ROBUSTO 
MV* 
Framework sempre mais poderoso 
Completamente testavel 
Paginas single page 
Criação de novos elementos HTML 
Aprendizado continuo
ESTRUTURA BÁSICA 
Modulos 
Controllers 
Serviços 
Diretivas
ALGUNS PROBLEMAS 
Performance, mas porquê?
KARMA
O QUE É 
Servidor node para testes unitários e e2e 
Framework: Jasmine, Mocha, QUnit 
Grunt e Gulp 
Desenvolvido pela equipe do AngularJS 
Fácil de configurar
CONFIGURAÇÕES ÚTEIS 
Integração com Jenkins 
Watcher 
Browsers (Chrome, PhantomJS, Firefox, Opera …)
module.exports = function(config) { 
config.set({ 
frameworks: ['jasmine'], 
files: [ 
'js/*.js', 
'test/**/*Spec.js' 
], 
exclude: [ ], 
preprocessors: {}, 
reporters: ['progress'], 
port: 9876, 
colors: true, 
logLevel: config.LOG_INFO, 
autoWatch: true, 
browsers: ['Chrome'], 
singleRun: false 
}); 
Arquivos a serem incluidos 
no teste 
Framework do teste 
Arquivo de configuração
JASMINE
PORQUE JASMINE? 
Fácil e intuitivo 
Padrão do Karma 
Ótima documentação
METODOS BÁSICOS
describe(‘Testes unitários', function() { 
… 
}); 
! 
! 
it(‘deveria testar alguma coisa', function() { 
… 
}); 
Agrupador que define um 
determinado grupo de 
testes 
Agrupador que define o 
inicio de um caso de teste 
Agrupadores
beforeEach('jasmine', function() { 
… 
}); 
! 
afterEach('jasmine', function() { 
… 
}); 
! 
expect(42).toBe(42); 
Utilitários antes e depois 
Realizando um teste 
de cada “it” 
Teste e Utilitários
UTILIZANDO O ANGULAR-MOCK
FUNÇÕES BÁSICAS 
Injeção de dependências nos testes 
Simulação de respostas de servidor 
Testes de timeoutes e intervalos 
Simulação do timeZone
TESTANDO O SERVIÇO
alert(DEMO);
TESTANDO O CONTROLLER
alert(DEMO);
TESTANDO DIRETIVAS
alert(DEMO);
console.log(‘Obrigado’); 
google.com/+HenriqueRamosLimas 
github/HenriqueLimas 
henriquelimas.github.io

Testando uma aplicação AngularJS utilizando o Karma