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
expect(RSpec::3).to be_coming_soon @Dius_AU Sep...
Search
Jon Rowe
September 12, 2013
Technology
210
0
Share
expect(RSpec::3).to be_coming_soon @Dius_AU September 2013
Repeat of my RSpec 3 talk given to DiusAU
Jon Rowe
September 12, 2013
More Decks by Jon Rowe
See All by Jon Rowe
RSpec - Level Up
jonrowe
0
310
Learning From Other Languages - Immutability
jonrowe
0
180
Intro-spec-tion RubyConfAU 2016
jonrowe
0
180
RSpec + Rails Without rspec-rails @ RoRoSyd November 2015
jonrowe
1
260
RSpec 3 and why I `expect(you).to care`
jonrowe
3
650
Upgrading RSpec - RoRoSyd June 14
jonrowe
1
110
def tdd_ios( hint: RubyMotion ) @ #SydInMotion
jonrowe
0
130
Tales Of Interest - RubyConfAU 2014
jonrowe
0
91
RSpec... Your doing it wrong... RoRoSYD Lightning Talk October 2013
jonrowe
0
160
Other Decks in Technology
See All in Technology
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.7k
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
0
510
NFLコンペ2026 解法
lycorptech_jp
PRO
0
130
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
670
Oracle Cloud Infrastructure:2026年5月度サービス・アップデート
oracle4engineer
PRO
1
260
APIテストとは?
nagix
0
150
ポスター発表&デモと総括 / Poster Presentations & Demonstrations and Summary
ks91
PRO
0
160
食べログのサーキットブレーカー導入を振り返って
atpons
1
150
なぜハノーバーメッセに行くべきなのか 〜初参加だから語れること〜
tanakaseiya
0
170
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
1
280
データ分析基盤の信頼を支える視点と設計
yuki_saito
2
760
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
520
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
370
Designing Powerful Visuals for Engaging Learning
tmiket
1
380
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
74k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
710
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Writing Fast Ruby
sferik
630
63k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
.*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......
....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... expect(RSpec::3).to be_coming_soon JON ROWE Thursday, 12 September 13
RSPEC Thursday, 12 September 13
RSPEC Released 0.x. 2005 Thursday, 12 September 13
RSPEC Released 0.x. 2005 Released 1.x. 2007 Thursday, 12 September
13
RSPEC Released 0.x. 2005 Released 1.x. 2007 Released 2.x 2010
Thursday, 12 September 13
RSPEC 2.x Thursday, 12 September 13
RSPEC 2.x 85 Contributors Thursday, 12 September 13
RSPEC 2.x 85 Contributors Modularisation Thursday, 12 September 13
RSPEC 2.x 85 Contributors Modularisation Filters, Meta Data Thursday, 12
September 13
RSPEC 2.x 85 Contributors Modularisation Filters, Meta Data Rails 3
Thursday, 12 September 13
Thursday, 12 September 13
365 Contributors Thursday, 12 September 13
365 Contributors >12340 Commits Thursday, 12 September 13
365 Contributors >12340 Commits > 14800 LOC Thursday, 12 September
13
.*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......
....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... RSPEC 3 Thursday, 12 September 13
SEMVER Thursday, 12 September 13
SEMVER Major Release Thursday, 12 September 13
SEMVER Major Release Breaking Changes Thursday, 12 September 13
SEMVER Major Release Breaking Changes Cleanup deprecations Thursday, 12 September
13
SEMVER Major Release Breaking Changes Cleanup deprecations Changed supported Rubies
Thursday, 12 September 13
RUBY Thursday, 12 September 13
RUBY 1.8.6 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 Thursday, 12 September
13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE Thursday, 12
September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8
Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8
JRuby 1.9 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8
JRuby 1.9 ~RBX 1.8 Thursday, 12 September 13
RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8
JRuby 1.9 ~RBX 1.8 ~RBX 1.9 Thursday, 12 September 13
RUBY 1.8.7 1.9.2 1.9.3 2.0.0 REE JRuby 1.8 JRuby 1.9
~RBX 1.8 ~RBX 1.9 Thursday, 12 September 13
Cleanup Thursday, 12 September 13
Cleanup Removal of string evals Thursday, 12 September 13
Cleanup Removal of string evals Removal of workarounds for 1.8.6
Thursday, 12 September 13
Cleanup Removal of string evals Removal of workarounds for 1.8.6
Remove Deprecations Thursday, 12 September 13
Cleanup Removal of string evals Removal of workarounds for 1.8.6
Remove Deprecations Extract Gems Thursday, 12 September 13
Deprecations Thursday, 12 September 13
Deprecations Spec Thursday, 12 September 13
Deprecations Spec stub! / unstub! Thursday, 12 September 13
Deprecations Spec stub! / unstub! mock / stub Thursday, 12
September 13
Deprecations Spec stub! / unstub! mock / stub at_least(0) /
any_number_of times Thursday, 12 September 13
Deprecations Spec stub! / unstub! mock / stub at_least(0) /
any_number_of times let/subject in before(:all) Thursday, 12 September 13
Deprecations Spec stub! / unstub! mock / stub at_least(0) /
any_number_of times let/subject in before(:all) should_not_receive(...).and_return Thursday, 12 September 13
Extract Gems Thursday, 12 September 13
Extract Gems autotest Thursday, 12 September 13
Extract Gems autotest rcov Thursday, 12 September 13
Extract Gems autotest rcov TextMate formatter Thursday, 12 September 13
Extract Gems autotest rcov TextMate formatter its Thursday, 12 September
13
Extract Gems autotest rcov TextMate formatter its collection_matchers Thursday, 12
September 13
Changes Thursday, 12 September 13
Changes New reporter / formatter API Thursday, 12 September 13
Changes New reporter / formatter API New shared_examples behaviour Thursday,
12 September 13
Changes New reporter / formatter API New shared_examples behaviour Block
based DSL yield example Thursday, 12 September 13
Changes New reporter / formatter API New shared_examples behaviour Block
based DSL yield example Verifying doubles Thursday, 12 September 13
Reporter API Thursday, 12 September 13
Reporter API Breaking change Thursday, 12 September 13
Reporter API Breaking change Event / subscription based Thursday, 12
September 13
Reporter API Breaking change Event / subscription based Message Objects
Thursday, 12 September 13
shared_examples Thursday, 12 September 13
shared_examples Currently shared examples are global Thursday, 12 September 13
shared_examples Currently shared examples are global Change to defined in
context Thursday, 12 September 13
shared_examples Currently shared examples are global Change to defined in
context Cross nesting won’t be possible Thursday, 12 September 13
DSL yields example Thursday, 12 September 13
DSL yields example Remove access to #example it { example
} => NoMethodError Thursday, 12 September 13
DSL yields example Remove access to #example it { example
} => NoMethodError Changing to yielded to block it { |example| ... } let(:thing) { |example| ... } Thursday, 12 September 13
Verifying Doubles Thursday, 12 September 13
Verifying Doubles Ported from rspec-fire (@xaviershay) Thursday, 12 September 13
Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in
isolation Thursday, 12 September 13
Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in
isolation Verify method signature when loaded Thursday, 12 September 13
Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in
isolation Verify method signature when loaded instance_double / class_double Thursday, 12 September 13
Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in
isolation Verify method signature when loaded instance_double / class_double as_stubbed_const Thursday, 12 September 13
.*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......
....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... expect(monkey_patches). to be_close_to 0 Thursday, 12 September 13
Monkey Patching Thursday, 12 September 13
Monkey Patching Causes problems with conflicts Thursday, 12 September 13
Monkey Patching Causes problems with conflicts Causes problems with internal
state Thursday, 12 September 13
Monkey Patching Causes problems with conflicts Causes problems with internal
state Clobbered by other monkeys Thursday, 12 September 13
expect syntax object.should matcher(result) object.should_not matcher(result) expect(object).to matcher(result) expect(object).to_not matcher(result)
Thursday, 12 September 13
expect syntax object.should_receive(:message) object.should_not_receive(:message) expect(object).to receive(:message) expect(object).to_not receive(:message) Thursday, 12
September 13
Expect Syntax Thursday, 12 September 13
Expect Syntax The preferred syntax going forward Thursday, 12 September
13
Expect Syntax The preferred syntax going forward Potentially only syntax
by default Thursday, 12 September 13
describe RSpec.describe do it “should not be monkey patchin’” do
expect(monkey_patches).to be_close_to 0 end end Thursday, 12 September 13
More Changes Thursday, 12 September 13
More Changes be_truthy / be_falsey Thursday, 12 September 13
More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )
Thursday, 12 September 13
More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )
No more integrated --debugger Thursday, 12 September 13
More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )
No more integrated --debugger New --dry-run mode Thursday, 12 September 13
More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )
No more integrated --debugger New --dry-run mode Less spammy deprecations Thursday, 12 September 13
TRANSITION Thursday, 12 September 13
TRANSITION 2.14 (last release of 2.x.) Thursday, 12 September 13
TRANSITION 2.14 (last release of 2.x.) 2.99 (transition) Thursday, 12
September 13
TRANSITION 2.14 (last release of 2.x.) 2.99 (transition) 3.0 (rc
then final) Thursday, 12 September 13
Summary Thursday, 12 September 13
Summary No more 1.8.6 / 1.9.1 Thursday, 12 September 13
Summary No more 1.8.6 / 1.9.1 Less monkey patching (use
expect) Thursday, 12 September 13
Summary No more 1.8.6 / 1.9.1 Less monkey patching (use
expect) New reporters Thursday, 12 September 13
Summary No more 1.8.6 / 1.9.1 Less monkey patching (use
expect) New reporters New shared_example behaviour Thursday, 12 September 13
Summary No more 1.8.6 / 1.9.1 Less monkey patching (use
expect) New reporters New shared_example behaviour Cleaner, leaner, meaner! Thursday, 12 September 13
.*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......
....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... QUESTIONS? Thursday, 12 September 13
.*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......
....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... THANKS @jonrowe (Twitter, GitHub, etc) http://jonrowe.co.uk Thursday, 12 September 13