Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Better JavaScript with Jasmine
Search
Todd Kaufman
July 27, 2012
Technology
4
250
Better JavaScript with Jasmine
Quick introduction into the Jasmine testing framework for JavaScript, geared towards the rubyist.
Todd Kaufman
July 27, 2012
Tweet
Share
More Decks by Todd Kaufman
See All by Todd Kaufman
Under Pressure
toddkaufman
0
140
Becoming Less Horrible at Diversity
toddkaufman
1
120
Fallacies of Software Development
toddkaufman
0
120
Finding Joy at Work
toddkaufman
1
4.2k
Culture
toddkaufman
1
130
Enacting Change
toddkaufman
0
1.4k
Failing with Agility
toddkaufman
2
120
Agile Metrics
toddkaufman
4
920
Other Decks in Technology
See All in Technology
Flutterアプリを⾃然⾔語で操作する
yukisakai1225
0
190
Javaアプリケーションの配布とパッケージング / Distribution and packaging of Java applications
hogelog
1
450
GoogleのAI Agent
shukob
0
180
Azure Developer CLI と Azure Deployment Environment / Azure Developer CLI and Azure Deployment Environment
nnstt1
1
150
入門 ESlint Typegen #TSKaigi #TSKaigi2025_kataritai
bengo4com
0
1.9k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
Autocon3 - Building Trustworthy Network Automation, From Principles to Practice
dgarros
2
110
Introduction to Bill One Development Engineer
sansan33
PRO
0
240
障害を回避するHttpClient再入門 / Avoiding Failures HttpClient Reintroduction
uskey512
1
340
Eight Engineering Unit 紹介資料
sansan33
PRO
0
3.3k
LT:組込み屋さんのオシロが壊れた!
windy_pon
0
550
積み上げられた技術資産と向き合いながら、プロダクトの信頼性をどう守るか
plaidtech
PRO
0
1k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
172
14k
Gamification - CAS2011
davidbonilla
81
5.3k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
Site-Speed That Sticks
csswizardry
8
600
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
42
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
106
19k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Building an army of robots
kneath
306
45k
Transcript
Better Javascript with Jasmine
I don’t test my JavaScript because ______________
“Semicolons are for losers”
“It can’t be automated”
“I already test it with Cucumber”
“I don’t have any REAL BUSINESS LOGIC in my JavaScript”
“It’s too hard”
“It changes too often”
“I’m lazy”
“It’s not worth the effort”
I have [ ] more [ ] less JavaScript in
my code than I used to.
I have [ X ] more [ ] less JavaScript
in my code than I used to.
None
Rubyists need not fear
the authors may have seen RSpec before
describe RomanNumeral do it "should convert I to 1" do
subject = RomanNumeral.new("I") subject.to_i.should eq(1) end end
describe("RomanNumeral", function() { it("returns 1 for I", function() { var
subject = new RomanNumeral("I"); return expect(subject.toI()).toBe(1); }); });
basics
RSpec Jasmine describe User do describe(“User”, function() it “saves stuff”
do it (“saves stuff”, function() value.should expect(value)
matchers
RSpec Jasmine name.should eq(“Todd”) expect(name).toBe(“Todd”); (3*3).should_not == 8 expect(3*3).not.toBe(8); be,
eql, equal, ==, === toEqual, toBe
None
None
RSpec Jasmine 7.should be_true expect(7).toBeTruthy(); (7).should_not be(true) expect(7).not.toBe(true); nil.should be_false
expect(null).toBeFalsy();
RSpec Jasmine [‘a’,’b’].should include(‘a’) expect([3,4]).toContain(4); (1.05).should be_close(1, 0.06) expect(1.05).toBeCloseTo(1, 0)
nil.should be_false expect(null).toBeFalsy();
toBeDefined / toBeUndefined toMatch(/regex/) toThrow custom matchers as well
beforeEach afterEach
xdescribe xit
None
test doubles
None
spies
None
None
None
None
None
None
None
None
stubs
None
jasmine-stealth
None
fakes
None
mocks
ease of use
None
None
None
but, semicolons are still for losers
describe("RomanNumeral", function() { it("returns 1 for I", function() { var
subject = new RomanNumeral("I"); return expect(subject.toI()).toBe(1); }); });
describe "RomanNumeral", -> it "returns 1 for I", -> subject
= new RomanNumeral("I") expect(subject.toI()).toBe 1
Great, so how do I run this stuff?
www.tryjasmine.com
None
Jasmine standalone
https://github.com/ pivotal/jasmine/ downloads
None
Jasmine within Rails
gem install jasmine
jasmine-headless-webkit
None
None
gem install jasmine-rails
Available for other enviroments as well
what now?
it’s not that hard
it is important
you have no excuses
Thanks! @toddkaufman @testdouble