SlideShare a Scribd company logo
Dev in Bahia 1º First
Technical Meeting
What is Dev In Bahia ?
• Borned in 2012 through the #horaextra.
• Has the vision to transform our local IT Market in a better
place to work and to develop ourselves as IT Professionals.
• What we do ?
• Promote Events, Discussions, User groups and so on.
Technical Meetings
• We are trying to promete one since last year.
• Prevented by:
• Place
• People
• Schedule
• We want to promote a technical meeting once or twice a
month.
• Tech Talk + Coding Dojo
• Before each meeting, people will send talk suggestions and we
are going to vote to choose.
Who is Paulo Ortins ?
• Developer at Inteligência Digital
• Masters Student at UFBA ( Software Engineering)
• Blogger at www.pauloortins.com
• Newsletter Curater at dotnetpills.apphb.com
• Joined in the community in 2011
• Polyglot Programmer
• Founded Dev In Bahia and #horaextra
Twitter: @pauloortins
Github: pauloortins
1º Technical Meeting
• How create tests using Javascript ?
A test overview
• Monkey Tests
• Unit Tests
• End-to-End Tests
Monkey Tests
But Requirements Change
You do it again
Monkey Test [2]
But Requirements Change[2]
Monkey Test Division
Problems with Monkey Tests
• Low Reliability, people aren’t machines, they work has
variance.
• Expensive, people have to test the software everytime
something changes.
Super Kent Beck
Automated Tests
• Tests should be automated.
• Functionality are done if, and only if, there are automated
tests covering them.
Unit Tests
• Tests only a piece of code.
• Provide instantly feedback about our software.
• Help to improve code design.
Example
function isBetweenFiveAndTen(number) {
var isGreaterThanFive = number > 5;
var isLesserThanTen = number < 10;
return isGreaterThanFive && isLesserThanTen;
}
Input Output
5 False
6 True
7 True
10 False
End-to-end Tests
• Tests simulate a monkey test, covering browser interaction,
database access, business rules.
• Slower than unit tests.
• Let me show a example using Selenium WebDriver
Javascript
• Javascript is rising.
• Web more interactive and responsive.
• Applications like Facebook and Gmail.
• Web Apps ( PhoneGap, Ext.js, jquery mobile)
Unit tests in Javascript
• There are several options to create unit tests in Javascript:
• Qunit
• Mocha
• Jasmine
Jasmine
• Created due the dissatisfaction existing framworks by
PivotalLabs.
• Small library
• Easy to use
Suites
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
• Describe, name a test suite ou a set test.
• It, describe the test name.
Expectations
describe("The 'toBe' matcher compares with ===", function() {
it("and has a positive case ", function() {
expect(true).toBe(true);
});
it("and can have a negative case", function() {
expect(false).not.toBe(true);
});
});
• Comparisons made through matchers, who are predefined
functions who receives a value (actual) and compares with the
expected value.
• A lot of matchers are included.
Matchers
describe("The 'toEqual' matcher", function() {
it("works for simple literals and variables", function() {
var a = 12;
expect(a).toEqual(12);
});
it("should work for objects", function() {
var foo = {
a: 12,
b: 34
};
var bar = {
a: 12,
b: 34
};
expect(foo).toEqual(bar);
});
});
Matchers
it("The 'toMatch' matcher is for regular expressions", function() {
var message = 'foo bar baz';
expect(message).toMatch(/bar/);
expect(message).toMatch('bar');
expect(message).not.toMatch(/quux/);
});
Matchers
it("The 'toBeDefined' matcher compares against `undefined`",
function() {
var a = {
foo: 'foo'
};
expect(a.foo).toBeDefined();
expect(a.bar).not.toBeDefined();
});
Matchers
it("The 'toBeNull' matcher compares against null", function() {
var a = null;
var foo = 'foo';
expect(null).toBeNull();
expect(a).toBeNull();
expect(foo).not.toBeNull();
});
Matchers
it("The 'toBeTruthy' matcher is for boolean casting testing", function()
{
var a, foo = 'foo';
expect(foo).toBeTruthy();
expect(a).not.toBeTruthy();
});
it("The 'toBeFalsy' matcher is for boolean casting testing", function() {
var a, foo = 'foo';
expect(a).toBeFalsy();
expect(foo).not.toBeFalsy();
});
Matchers
it("The 'toContain' matcher is for finding an item in an Array",
function() {
var a = ['foo', 'bar', 'baz'];
expect(a).toContain('bar');
expect(a).not.toContain('quux');
});
Matchers
it("The 'toBeLessThan' matcher is for mathematical comparisons", function() {
var pi = 3.1415926, e = 2.78;
expect(e).toBeLessThan(pi);
expect(pi).not.toBeLessThan(e);
});
it("The 'toBeGreaterThan' is for mathematical comparisons", function() {
var pi = 3.1415926, e = 2.78;
expect(pi).toBeGreaterThan(e);
expect(e).not.toBeGreaterThan(pi);
});
it("The 'toBeCloseTo' matcher is for precision math comparison", function() {
var pi = 3.1415926, e = 2.78;
expect(pi).not.toBeCloseTo(e, 2);
expect(pi).toBeCloseTo(e, 0);
});
Matchers
it("The 'toThrow' matcher is for testing if a function throws an
exception", function() {
var foo = function() {
return 1 + 2;
};
var bar = function() {
return a + 1;
};
expect(foo).not.toThrow();
expect(bar).toThrow();
});
Custom Matchers
beforeEach(function() {
this.addMatchers({
isEven: function(number) {
return number % 2 === 0;
}
});
});
Setup/Teardown
describe("A spec (with setup and tear-down)", function() {
var foo;
beforeEach(function() {
foo = 0;
foo += 1;
});
afterEach(function() {
foo = 0;
});
it("is just a function, so it can contain any code", function() {
expect(foo).toEqual(1);
});
it("can have more than one expectation", function() {
expect(foo).toEqual(1);
expect(true).toEqual(true);
});
});
Let’s play with Jasmine
• Site
• Tutorial
• Standalone Version
Testacular/Karma
• Created by Google to test Angular.js
• Runs on top of Node.js
• Watch our JS files to detect changes and rerun the tests
Thank you!

More Related Content

KEY
I18n
PDF
Karate - powerful and simple framework for REST API automation testing
PDF
Python for AngularJS
PPTX
Automate right start from API
PDF
Confident Refactoring - Ember SF Meetup
PDF
Angular Application Testing
PDF
Using the latest Java Persistence API 2 Features - Tech Days 2010 India
PPTX
Introduction to testing in Rails
I18n
Karate - powerful and simple framework for REST API automation testing
Python for AngularJS
Automate right start from API
Confident Refactoring - Ember SF Meetup
Angular Application Testing
Using the latest Java Persistence API 2 Features - Tech Days 2010 India
Introduction to testing in Rails

What's hot (20)

PPTX
Karate for Complex Web-Service API Testing by Peter Thomas
PPTX
Karate - MoT Dallas 26-Oct-2017
PPTX
Zero to Testing in JavaScript
PDF
Deploying a Location-Aware Ember Application
PDF
TDD with phpspec2
PDF
Pretenders talk at PyconUK 2012
PPTX
MidwestJS Zero to Testing
PDF
Controller Testing: You're Doing It Wrong
PDF
RSpec 2 Best practices
PDF
Modern Functional Fluent ColdFusion REST Apis
PPTX
A Deep Dive into the W3C WebDriver Specification
PPTX
Jasmine
PDF
Cucumber Ru09 Web
PDF
Karate - Web-Service API Testing Made Simple
PPTX
CUCUMBER - Making BDD Fun
PDF
Automated Testing in EmberJS
PPT
TDD, BDD, RSpec
ODP
2010 07-20 TDD with ActiveResource
PDF
The Power of RxJS in Nativescript + Angular
PDF
Outside-in Development with Cucumber and Rspec
Karate for Complex Web-Service API Testing by Peter Thomas
Karate - MoT Dallas 26-Oct-2017
Zero to Testing in JavaScript
Deploying a Location-Aware Ember Application
TDD with phpspec2
Pretenders talk at PyconUK 2012
MidwestJS Zero to Testing
Controller Testing: You're Doing It Wrong
RSpec 2 Best practices
Modern Functional Fluent ColdFusion REST Apis
A Deep Dive into the W3C WebDriver Specification
Jasmine
Cucumber Ru09 Web
Karate - Web-Service API Testing Made Simple
CUCUMBER - Making BDD Fun
Automated Testing in EmberJS
TDD, BDD, RSpec
2010 07-20 TDD with ActiveResource
The Power of RxJS in Nativescript + Angular
Outside-in Development with Cucumber and Rspec
Ad

Viewers also liked (6)

PPTX
Como participar de comunidades de software mudou a minha carreira e também po...
PPTX
GDG Dev Fest Extended - Mobilidade além do smartphone
PPTX
Use Xamarin.Forms and surprise your customers when develop native apps, in le...
PPTX
GDG DevFest Nordeste - Quer desenvolver aplicações mobile nativas, cross-plat...
PPTX
The Developer's Conference 2015 - Florianópolis - Use o Xamarin.Forms e surpr...
PDF
Advanced Jasmine - Front-End JavaScript Unit Testing
Como participar de comunidades de software mudou a minha carreira e também po...
GDG Dev Fest Extended - Mobilidade além do smartphone
Use Xamarin.Forms and surprise your customers when develop native apps, in le...
GDG DevFest Nordeste - Quer desenvolver aplicações mobile nativas, cross-plat...
The Developer's Conference 2015 - Florianópolis - Use o Xamarin.Forms e surpr...
Advanced Jasmine - Front-End JavaScript Unit Testing
Ad

Similar to Tests in Javascript using Jasmine and Testacular (20)

PDF
JavaScript Interview Questions Part - 1.pdf
PDF
Build a game with javascript (april 2017)
PPTX
Welcome to React.pptx
ZIP
Javascript Everywhere
PDF
WebNet Conference 2012 - Designing complex applications using html5 and knock...
PDF
Thinkful - Intro to JavaScript
PDF
Intro to javascript (6:19)
PDF
Build a game with javascript (may 21 atlanta)
PPTX
Swift meetup22june2015
PDF
Swift and Kotlin Presentation
PDF
Intro to node.js - Ran Mizrahi (27/8/2014)
PDF
Intro to node.js - Ran Mizrahi (28/8/14)
PDF
Top100summit 谷歌-scott-improve your automated web application testing
PDF
Creating a Responsive Website From Scratch
PDF
Intro to JavaScript - Thinkful LA, June 2017
ODP
Intro To Spring Python
PPTX
Java script unit testing
PPTX
Bridging the communication Gap & Continuous Delivery
PDF
WeTestAthens: Postman's AI & Automation Techniques
PPTX
Javascript first-class citizenery
JavaScript Interview Questions Part - 1.pdf
Build a game with javascript (april 2017)
Welcome to React.pptx
Javascript Everywhere
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Thinkful - Intro to JavaScript
Intro to javascript (6:19)
Build a game with javascript (may 21 atlanta)
Swift meetup22june2015
Swift and Kotlin Presentation
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (28/8/14)
Top100summit 谷歌-scott-improve your automated web application testing
Creating a Responsive Website From Scratch
Intro to JavaScript - Thinkful LA, June 2017
Intro To Spring Python
Java script unit testing
Bridging the communication Gap & Continuous Delivery
WeTestAthens: Postman's AI & Automation Techniques
Javascript first-class citizenery

More from Paulo Cesar Ortins Brito (10)

PPTX
GDG Tech Talk - Quer desenvolver aplicações nativas e cross-plataforma usando...
PPTX
TDC Porto Alegre 2014 - Quer desenvolver aplicações nativas e cross-plataform...
PPTX
Semana Computação UFBA 2014 - Quer desenvolver aplicações nativas e cross-pla...
PPTX
Semana Computação Unifacs 2014 - Quer desenvolver aplicações nativas e cross-...
PPTX
Utilizando a API do Roslyn, o novo compilador do C#
PPTX
Métricas de Código
PPTX
Explicando conceitos de software usando situações do cotidiano
PPTX
Mergulhando no ecossistema .NET
PPTX
A vez do mobile - Dev in Bahia #3
PPTX
SFD - C# para a comunidade
GDG Tech Talk - Quer desenvolver aplicações nativas e cross-plataforma usando...
TDC Porto Alegre 2014 - Quer desenvolver aplicações nativas e cross-plataform...
Semana Computação UFBA 2014 - Quer desenvolver aplicações nativas e cross-pla...
Semana Computação Unifacs 2014 - Quer desenvolver aplicações nativas e cross-...
Utilizando a API do Roslyn, o novo compilador do C#
Métricas de Código
Explicando conceitos de software usando situações do cotidiano
Mergulhando no ecossistema .NET
A vez do mobile - Dev in Bahia #3
SFD - C# para a comunidade

Recently uploaded (20)

PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Big Data Technologies - Introduction.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
cuic standard and advanced reporting.pdf
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPT
Teaching material agriculture food technology
PDF
Spectral efficient network and resource selection model in 5G networks
Chapter 3 Spatial Domain Image Processing.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Understanding_Digital_Forensics_Presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
Big Data Technologies - Introduction.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
cuic standard and advanced reporting.pdf
Machine learning based COVID-19 study performance prediction
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Programs and apps: productivity, graphics, security and other tools
NewMind AI Weekly Chronicles - August'25 Week I
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Reach Out and Touch Someone: Haptics and Empathic Computing
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Teaching material agriculture food technology
Spectral efficient network and resource selection model in 5G networks

Tests in Javascript using Jasmine and Testacular

  • 1. Dev in Bahia 1º First Technical Meeting
  • 2. What is Dev In Bahia ? • Borned in 2012 through the #horaextra. • Has the vision to transform our local IT Market in a better place to work and to develop ourselves as IT Professionals. • What we do ? • Promote Events, Discussions, User groups and so on.
  • 3. Technical Meetings • We are trying to promete one since last year. • Prevented by: • Place • People • Schedule • We want to promote a technical meeting once or twice a month. • Tech Talk + Coding Dojo • Before each meeting, people will send talk suggestions and we are going to vote to choose.
  • 4. Who is Paulo Ortins ? • Developer at Inteligência Digital • Masters Student at UFBA ( Software Engineering) • Blogger at www.pauloortins.com • Newsletter Curater at dotnetpills.apphb.com • Joined in the community in 2011 • Polyglot Programmer • Founded Dev In Bahia and #horaextra Twitter: @pauloortins Github: pauloortins
  • 5. 1º Technical Meeting • How create tests using Javascript ?
  • 6. A test overview • Monkey Tests • Unit Tests • End-to-End Tests
  • 9. You do it again
  • 13. Problems with Monkey Tests • Low Reliability, people aren’t machines, they work has variance. • Expensive, people have to test the software everytime something changes.
  • 15. Automated Tests • Tests should be automated. • Functionality are done if, and only if, there are automated tests covering them.
  • 16. Unit Tests • Tests only a piece of code. • Provide instantly feedback about our software. • Help to improve code design.
  • 17. Example function isBetweenFiveAndTen(number) { var isGreaterThanFive = number > 5; var isLesserThanTen = number < 10; return isGreaterThanFive && isLesserThanTen; } Input Output 5 False 6 True 7 True 10 False
  • 18. End-to-end Tests • Tests simulate a monkey test, covering browser interaction, database access, business rules. • Slower than unit tests. • Let me show a example using Selenium WebDriver
  • 19. Javascript • Javascript is rising. • Web more interactive and responsive. • Applications like Facebook and Gmail. • Web Apps ( PhoneGap, Ext.js, jquery mobile)
  • 20. Unit tests in Javascript • There are several options to create unit tests in Javascript: • Qunit • Mocha • Jasmine
  • 21. Jasmine • Created due the dissatisfaction existing framworks by PivotalLabs. • Small library • Easy to use
  • 22. Suites describe("A suite", function() { it("contains spec with an expectation", function() { expect(true).toBe(true); }); }); • Describe, name a test suite ou a set test. • It, describe the test name.
  • 23. Expectations describe("The 'toBe' matcher compares with ===", function() { it("and has a positive case ", function() { expect(true).toBe(true); }); it("and can have a negative case", function() { expect(false).not.toBe(true); }); }); • Comparisons made through matchers, who are predefined functions who receives a value (actual) and compares with the expected value. • A lot of matchers are included.
  • 24. Matchers describe("The 'toEqual' matcher", function() { it("works for simple literals and variables", function() { var a = 12; expect(a).toEqual(12); }); it("should work for objects", function() { var foo = { a: 12, b: 34 }; var bar = { a: 12, b: 34 }; expect(foo).toEqual(bar); }); });
  • 25. Matchers it("The 'toMatch' matcher is for regular expressions", function() { var message = 'foo bar baz'; expect(message).toMatch(/bar/); expect(message).toMatch('bar'); expect(message).not.toMatch(/quux/); });
  • 26. Matchers it("The 'toBeDefined' matcher compares against `undefined`", function() { var a = { foo: 'foo' }; expect(a.foo).toBeDefined(); expect(a.bar).not.toBeDefined(); });
  • 27. Matchers it("The 'toBeNull' matcher compares against null", function() { var a = null; var foo = 'foo'; expect(null).toBeNull(); expect(a).toBeNull(); expect(foo).not.toBeNull(); });
  • 28. Matchers it("The 'toBeTruthy' matcher is for boolean casting testing", function() { var a, foo = 'foo'; expect(foo).toBeTruthy(); expect(a).not.toBeTruthy(); }); it("The 'toBeFalsy' matcher is for boolean casting testing", function() { var a, foo = 'foo'; expect(a).toBeFalsy(); expect(foo).not.toBeFalsy(); });
  • 29. Matchers it("The 'toContain' matcher is for finding an item in an Array", function() { var a = ['foo', 'bar', 'baz']; expect(a).toContain('bar'); expect(a).not.toContain('quux'); });
  • 30. Matchers it("The 'toBeLessThan' matcher is for mathematical comparisons", function() { var pi = 3.1415926, e = 2.78; expect(e).toBeLessThan(pi); expect(pi).not.toBeLessThan(e); }); it("The 'toBeGreaterThan' is for mathematical comparisons", function() { var pi = 3.1415926, e = 2.78; expect(pi).toBeGreaterThan(e); expect(e).not.toBeGreaterThan(pi); }); it("The 'toBeCloseTo' matcher is for precision math comparison", function() { var pi = 3.1415926, e = 2.78; expect(pi).not.toBeCloseTo(e, 2); expect(pi).toBeCloseTo(e, 0); });
  • 31. Matchers it("The 'toThrow' matcher is for testing if a function throws an exception", function() { var foo = function() { return 1 + 2; }; var bar = function() { return a + 1; }; expect(foo).not.toThrow(); expect(bar).toThrow(); });
  • 32. Custom Matchers beforeEach(function() { this.addMatchers({ isEven: function(number) { return number % 2 === 0; } }); });
  • 33. Setup/Teardown describe("A spec (with setup and tear-down)", function() { var foo; beforeEach(function() { foo = 0; foo += 1; }); afterEach(function() { foo = 0; }); it("is just a function, so it can contain any code", function() { expect(foo).toEqual(1); }); it("can have more than one expectation", function() { expect(foo).toEqual(1); expect(true).toEqual(true); }); });
  • 34. Let’s play with Jasmine • Site • Tutorial • Standalone Version
  • 35. Testacular/Karma • Created by Google to test Angular.js • Runs on top of Node.js • Watch our JS files to detect changes and rerun the tests