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. });

Automação de Testes com AngularJS

  • 1.
    Rodrigo Branas –@rodrigobranas - http://www.agilecode.com.br Automação de Testes com AngularJS
  • 2.
    “Transformar equipes dedesenvolvimento 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ênciasda 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á maisde 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.
  • 6.
  • 7.
    1. angular.module("contatos").controller("contatosCtrl", function ($scope) { 2. $scope.appName = "Contatos"; 3. });
  • 8.
    1. describe("Contatos ControllerSpecification", 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. });
  • 9.
  • 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 FilterSpecification", 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. });
  • 12.
  • 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 ServiceSpecification", 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. });
  • 15.
  • 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 DirectiveSpecification", 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