SlideShare uma empresa Scribd logo
1 de 17
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br 
Automação de Testes com 
AngularJS
“Transformar equipes de desenvolvimento de software” 
http://www.agilecode.com.br
Rodrigo Branas 
rodrigo.branas@agilecode.com.br 
http://www.agilecode.com.br 
• Desenvolvendo Software na Gennera 
• Criando treinamentos na Agile Code 
• Escrevendo na Java Magazine e PacktPub 
• Palestrando sobre desenvolvimento de 
software em eventos, universidades e 
empresas
Formação Acadêmica 
Ciências da Computação – UFSC 
Gerenciamento de Projetos - FGV 
Certificações 
SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM 
Experiência 
Há mais de 12 anos desenvolvendo software na 
plataforma Java com as empresas: EDS, HP, NET, 
Citibank, GM, Dígitro, Softplan, OnCast, Senai, 
VALE, RBS, Unimed, Globalcode, V.Office, Suntech, 
WPlex e Gennera.
• Há mais de 5 anos liderando pessoas. 
• Mais de 2000 horas em sala de aula. 
• Mais de 100 apresentações em eventos. 
• 6 artigos escritos para revistas. 
• 1 livro. 
• Mais de 500 profissionais treinados. 
• Criação de 22 palestras. 
• Criação de 10 treinamentos. 
• Criação de mais de 3.000 slides.
controller
1. angular.module("contatos").controller("contatosCtrl", function 
($scope) { 
2. $scope.appName = "Contatos"; 
3. });
1. describe("Contatos Controller Specification", function () { 
2. var $scope; 
3. 
4. beforeEach(module("contatos")); 
5. 
6. beforeEach(inject(function ($controller, $rootScope) { 
7. $scope = $rootScope.$new(); 
8. $controller("contatosCtrl", { 
9. $scope: $scope 
10. }); 
11. })); 
12. it("O nome da aplicação deve ser contatos", function () { 
13. var expectedAppTitle = "Contatos"; 
14. expect($scope.appTitle).toBe(expectedAppTitle); 
15. }); 
16. });
filter
1. angular.module("contatos").filter("telefone", function () { 
2. return function (input, separator) { 
3. return input.substring(0, 4) + separator + input.substring(4); 
4. }; 
5. });
1. describe("Telefone Filter Specification", function () { 
2. var telefoneFilter; 
3. 
4. beforeEach(module("contatos")); 
5. 
6. beforeEach(inject(function (_telefoneFilter_) { 
7. telefoneFilter = _telefoneFilter_; 
8. })); 
9. 
10. it("Deve formatar o telefone", function () { 
11. var telefone= "99999999" 
12. var expectedTelefone = "9999-9999"; 
13. expect(telefoneFilter(telefone, "-")).toBe(expectedTelefone); 
14. }); 
15. });
service
1. angular.module("contatos").factory("contatosService", function () { 
2. return { 
3. calcularImposto: function (valor) { 
4. return valor*0.10; 
5. } 
6. }; 
7. });
1. describe("Contatos Service Specification", function () { 
2. var contatosService; 
3. beforeEach(module("contatos")); 
4. 
5. beforeEach(inject(function (_contatosService_) { 
6. contatosService = _contatosService_; 
7. })); 
8. it("Deve calcular o imposto da chamada", function () { 
9. var expectedImposto = 10; 
10. expected(contatosService.calcularImposto(100)).toBe(10); 
11. }); 
12. });
directive
1. angular.module("contatos").directive("alert", function () { 
2. return { 
3. template: "<div><div>{{topic}}</div><div ng-transclude></ 
div></div>", 
4. restrict: "E", 
5. scope: { 
6. topic: "@" 
7. }, 
8. transclude: true 
9. }; 
10. });
1. describe("Alert Directive Specification", function () { 
2. var element, scope; 
3. beforeEach(module('contatos')); 
4. 
5. beforeEach(inject(function ($rootScope, $compile) { 
6. scope = $rootScope; 
7. element = angular.element( 
8. "<alert topic='Something went wrong!'>" + 
9. "Please inform the plate and the color of the car" + 
10. "</alert>" 
11. ); 
12. var linkFunction = $compile(element); 
13. linkFunction(scope); 
14. scope.$digest(); 
15. })); 
16. 
17. it("Should compile the alert directive", function () { 
18. var expectedElement = "<div>...</div>"; 
19. expect(element.html()).toBe(expectedElement); 
20. }); 
21. });

Mais conteúdo relacionado

Mais procurados

Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Rodrigo Branas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSHenrique Limas
 
AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideSergio Azevedo
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTRodrigo Fortes
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQueryRicardo Coelho
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 

Mais procurados (20)

Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
Clean Code
Clean CodeClean Code
Clean Code
 
Angular js
Angular jsAngular js
Angular js
 
Bower
BowerBower
Bower
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
AngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-SideAngularJS Abraçando o MVC Client-Side
AngularJS Abraçando o MVC Client-Side
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
 
Introdução ao AngularJS!
Introdução ao AngularJS!Introdução ao AngularJS!
Introdução ao AngularJS!
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQuery
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 

Destaque

Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJSRodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSRodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões RegularesRodrigo Branas
 
Aplicando filtros com AngularJS
Aplicando filtros com AngularJSAplicando filtros com AngularJS
Aplicando filtros com AngularJSRodrigo Branas
 
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARECROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWAREMoisés Armani Ramírez
 
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...GUTS-RS
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasRodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasRodrigo Branas
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJSRodrigo Branas
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 
Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresÁlvaro Alonso González
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQueryTiago Butzke
 

Destaque (19)

Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJSUtilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Aplicando filtros com AngularJS
Aplicando filtros com AngularJSAplicando filtros com AngularJS
Aplicando filtros com AngularJS
 
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARECROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
 
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Validando Formulários com AngularJS
Validando Formulários com AngularJSValidando Formulários com AngularJS
Validando Formulários com AngularJS
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
Curso AngularJS - 2. conceptos básicos
Curso AngularJS - 2. conceptos básicosCurso AngularJS - 2. conceptos básicos
Curso AngularJS - 2. conceptos básicos
 
Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladores
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQuery
 
Curso AngularJS - 1. introducción
Curso AngularJS - 1. introducciónCurso AngularJS - 1. introducción
Curso AngularJS - 1. introducción
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 

Semelhante a Automação de Testes com AngularJS

Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexEric Cavalcanti
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Rogerio Cordeiro
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSLeonardo Zanivan
 
Dynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMDynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMPedro Azevedo
 
Gleidson rodrigues apresentação profissional
Gleidson rodrigues   apresentação profissionalGleidson rodrigues   apresentação profissional
Gleidson rodrigues apresentação profissionalGleidson Rodrigues
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Stefanini
 
Usando React Native & Multi Módulos para Escalar App Creditas
Usando React Native & Multi Módulos para Escalar App CreditasUsando React Native & Multi Módulos para Escalar App Creditas
Usando React Native & Multi Módulos para Escalar App CreditasJuliana Chahoud
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileVitor Albuquerque
 
Dalton Sergio Leonardo Pt Currículo 20160803
Dalton Sergio Leonardo Pt  Currículo 20160803Dalton Sergio Leonardo Pt  Currículo 20160803
Dalton Sergio Leonardo Pt Currículo 20160803Dalton Sergio Leonardo
 

Semelhante a Automação de Testes com AngularJS (20)

Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações Flex
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Curriculum vitae u05_lutonda
Curriculum vitae u05_lutondaCurriculum vitae u05_lutonda
Curriculum vitae u05_lutonda
 
Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)Programando extensões para Internet Explorer (Webslices e Aceleradores)
Programando extensões para Internet Explorer (Webslices e Aceleradores)
 
FabricioDoi
FabricioDoiFabricioDoi
FabricioDoi
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJS
 
Microsoft Dynamics CRM
Microsoft Dynamics CRMMicrosoft Dynamics CRM
Microsoft Dynamics CRM
 
Dynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRMDynamics CRM - Mais que uma plataforma de CRM
Dynamics CRM - Mais que uma plataforma de CRM
 
Gleidson rodrigues apresentação profissional
Gleidson rodrigues   apresentação profissionalGleidson rodrigues   apresentação profissional
Gleidson rodrigues apresentação profissional
 
Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
Desenvolvimento Mobile com Visual Studio 2008, por onde começar?
 
Usando React Native & Multi Módulos para Escalar App Creditas
Usando React Native & Multi Módulos para Escalar App CreditasUsando React Native & Multi Módulos para Escalar App Creditas
Usando React Native & Multi Módulos para Escalar App Creditas
 
Cadoop
CadoopCadoop
Cadoop
 
CVitae- Sergio Della Nina
CVitae- Sergio Della Nina CVitae- Sergio Della Nina
CVitae- Sergio Della Nina
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Projeto YES
Projeto YESProjeto YES
Projeto YES
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
Dalton Sergio Leonardo Pt Currículo 20160803
Dalton Sergio Leonardo Pt  Currículo 20160803Dalton Sergio Leonardo Pt  Currículo 20160803
Dalton Sergio Leonardo Pt Currículo 20160803
 

Mais de Rodrigo Branas

Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasRodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisasRodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remotoRodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e MergingRodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 

Mais de Rodrigo Branas (10)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 

Automação de Testes com AngularJS

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Automação de Testes com AngularJS
  • 2. “Transformar equipes de desenvolvimento de software” http://www.agilecode.com.br
  • 3. Rodrigo Branas rodrigo.branas@agilecode.com.br http://www.agilecode.com.br • Desenvolvendo Software na Gennera • Criando treinamentos na Agile Code • Escrevendo na Java Magazine e PacktPub • Palestrando sobre desenvolvimento de software em eventos, universidades e empresas
  • 4. Formação Acadêmica Ciências da Computação – UFSC Gerenciamento de Projetos - FGV Certificações SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM Experiência Há mais de 12 anos desenvolvendo software na plataforma Java com as empresas: EDS, HP, NET, Citibank, GM, Dígitro, Softplan, OnCast, Senai, VALE, RBS, Unimed, Globalcode, V.Office, Suntech, WPlex e Gennera.
  • 5. • Há mais de 5 anos liderando pessoas. • Mais de 2000 horas em sala de aula. • Mais de 100 apresentações em eventos. • 6 artigos escritos para revistas. • 1 livro. • Mais de 500 profissionais treinados. • Criação de 22 palestras. • Criação de 10 treinamentos. • Criação de mais de 3.000 slides.
  • 7. 1. angular.module("contatos").controller("contatosCtrl", function ($scope) { 2. $scope.appName = "Contatos"; 3. });
  • 8. 1. describe("Contatos Controller Specification", function () { 2. var $scope; 3. 4. beforeEach(module("contatos")); 5. 6. beforeEach(inject(function ($controller, $rootScope) { 7. $scope = $rootScope.$new(); 8. $controller("contatosCtrl", { 9. $scope: $scope 10. }); 11. })); 12. it("O nome da aplicação deve ser contatos", function () { 13. var expectedAppTitle = "Contatos"; 14. expect($scope.appTitle).toBe(expectedAppTitle); 15. }); 16. });
  • 10. 1. angular.module("contatos").filter("telefone", function () { 2. return function (input, separator) { 3. return input.substring(0, 4) + separator + input.substring(4); 4. }; 5. });
  • 11. 1. describe("Telefone Filter Specification", function () { 2. var telefoneFilter; 3. 4. beforeEach(module("contatos")); 5. 6. beforeEach(inject(function (_telefoneFilter_) { 7. telefoneFilter = _telefoneFilter_; 8. })); 9. 10. it("Deve formatar o telefone", function () { 11. var telefone= "99999999" 12. var expectedTelefone = "9999-9999"; 13. expect(telefoneFilter(telefone, "-")).toBe(expectedTelefone); 14. }); 15. });
  • 13. 1. angular.module("contatos").factory("contatosService", function () { 2. return { 3. calcularImposto: function (valor) { 4. return valor*0.10; 5. } 6. }; 7. });
  • 14. 1. describe("Contatos Service Specification", function () { 2. var contatosService; 3. beforeEach(module("contatos")); 4. 5. beforeEach(inject(function (_contatosService_) { 6. contatosService = _contatosService_; 7. })); 8. it("Deve calcular o imposto da chamada", function () { 9. var expectedImposto = 10; 10. expected(contatosService.calcularImposto(100)).toBe(10); 11. }); 12. });
  • 16. 1. angular.module("contatos").directive("alert", function () { 2. return { 3. template: "<div><div>{{topic}}</div><div ng-transclude></ div></div>", 4. restrict: "E", 5. scope: { 6. topic: "@" 7. }, 8. transclude: true 9. }; 10. });
  • 17. 1. describe("Alert Directive Specification", function () { 2. var element, scope; 3. beforeEach(module('contatos')); 4. 5. beforeEach(inject(function ($rootScope, $compile) { 6. scope = $rootScope; 7. element = angular.element( 8. "<alert topic='Something went wrong!'>" + 9. "Please inform the plate and the color of the car" + 10. "</alert>" 11. ); 12. var linkFunction = $compile(element); 13. linkFunction(scope); 14. scope.$digest(); 15. })); 16. 17. it("Should compile the alert directive", function () { 18. var expectedElement = "<div>...</div>"; 19. expect(element.html()).toBe(expectedElement); 20. }); 21. });

Notas do Editor

  1. Qual é a sua obra?
  2. Desmotivado
  3. Desmotivado
  4. Motivação
  5. Desmotivação
  6. Desmotivação
  7. Desmotivação
  8. Desmotivação