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
0
200
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
Tweet
Share
More Decks by Jon Rowe
See All by Jon Rowe
RSpec - Level Up
jonrowe
0
300
Learning From Other Languages - Immutability
jonrowe
0
160
Intro-spec-tion RubyConfAU 2016
jonrowe
0
170
RSpec + Rails Without rspec-rails @ RoRoSyd November 2015
jonrowe
1
250
RSpec 3 and why I `expect(you).to care`
jonrowe
3
630
Upgrading RSpec - RoRoSyd June 14
jonrowe
1
100
def tdd_ios( hint: RubyMotion ) @ #SydInMotion
jonrowe
0
130
Tales Of Interest - RubyConfAU 2014
jonrowe
0
74
RSpec... Your doing it wrong... RoRoSYD Lightning Talk October 2013
jonrowe
0
140
Other Decks in Technology
See All in Technology
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
190
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
130
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
350
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
200
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
330
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
400
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
67
What's in a price? How to price your products and services
michaelherold
247
13k
Skip the Path - Find Your Career Trail
mkilby
0
59
Art, The Web, and Tiny UX
lynnandtonic
304
21k
30 Presentation Tips
portentint
PRO
1
220
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
How to train your dragon (web standard)
notwaldorf
97
6.5k
The Pragmatic Product Professional
lauravandoore
37
7.1k
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