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
Ruby2.1のRefinementsで作るSpockライクなテスト構文
Search
Tomohiro Hashidate
August 23, 2014
Programming
12
1.5k
Ruby2.1のRefinementsで作るSpockライクなテスト構文
RefinementsをRSpecで活用してパラメータライズドテスト用のシンタックスを実現する話。
Tomohiro Hashidate
August 23, 2014
Tweet
Share
More Decks by Tomohiro Hashidate
See All by Tomohiro Hashidate
Rustで作るtree-sitterパーサーのRubyバインディング
joker1007
5
680
tree-sitter-rbsで作って学ぶRBSとパーサージェネレーター
joker1007
3
170
Kafka Streamsで作る10万rpsを支えるイベント駆動マイクロサービス
joker1007
7
3.1k
neovimで作る最新Ruby開発環境2023
joker1007
2
3.6k
ReproのImport/Exportを支えるサーバーレスアーキテクチャ
joker1007
1
1.2k
Ruby on Rails on Lambda
joker1007
13
12k
Sidekiq to Kafka ストリームベースのmicro services
joker1007
4
8.7k
令和時代のRails運用
joker1007
35
15k
TracePointから学ぶRubyVM
joker1007
0
1.7k
Other Decks in Programming
See All in Programming
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
Lessons by WebAssembly app in production on CDN Edge Computing Service
tetsuharuohzeki
0
210
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
220
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
160
API Platform for Laravel
dunglas
1
390
Ebitengineの1vs1ゲーム WebRTCの活用
ponyo877
0
380
Pythonで改めて考える「クラス(class)」の使いどころ
os1ma
2
560
Jakarta EE meets AI
ivargrimstad
1
520
今インフラ技術をイチから学び直すなら
yuhta28
1
140
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
dwursteisen
0
120
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
170
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
28
1.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
8.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Optimizing for Happiness
mojombo
375
69k
What's in a price? How to price your products and services
michaelherold
242
11k
Design by the Numbers
sachag
277
19k
Statistics for Hackers
jakevdp
794
220k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
1
54
RailsConf 2023
tenderlove
28
810
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
It's Worth the Effort
3n
182
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Transcript
Ruby2.1ͷRefinementsͰ࡞Δ SpockϥΠΫͳςετߏจ ڮཱ༑@joker1007
!KPLFS 3VCZ3BJMT4DBMB ! :PLPIBNBSC 4IJCVZBSC "TBLVTBSC 5%%#$
ؔਓͰ͢
None
Refinements
ར༻Λએݴͨ͠ίϯςΩετͰͷΈ ϝιου͕ఆٛ͞ΕΔ
• Ruby 2.0͔ΒՃ (experimental) • Ruby 2.0ͷrefinementsτοϓϨϕϧͷΈ • Ruby 2.1͔Βexperimental͡Όͳ͘ͳͬͨ
• Ruby 2.1͔ΒΫϥεείʔϓͰએݴͰ͖ΔΑ͏ʹͳͬͨ
Ruby 2.1͔Β͜͏ॻ͚Δ
Կ͕خ͍͠ͷ͔
ΈࠐΈΫϥεͷ ϝιουΛ্ॻ͖ͯ͠ ӨڹൣғΛݶఆͰ͖Δ DSLॻ͖์ʂ
࣮ࡍͦΕͳΓʹ੍ݶ͕…
ຊ
RSpec
Spock
Spock Cool !!
RefinementsͰ RSpecΛͦΕͬΆ͘ॻ͘
rspec-parameterized https://github.com/tomykaira/rspec-parameterized
ͦΕͬΆ͍ʂ
None
ԿΛ͍ͬͯΔͷ͔ • binding_of_callerͰݺͼग़͠ݩͷbindingΛऔಘ͢Δ • evalͯ͠ݺͼग़͠ݩͷExampleGroupͷΠϯελϯε Λऔಘ͢Δ • ݺͼग़͠ݩͷΠϯελϯεʹύϥϝʔλʔอ࣋ͷͨ ΊͷΠϯελϯεมΛಈతʹఆٛ͢Δ •
ΦϒδΣΫτΛϥοϓͯ͠Πϯελϯεมʹύϥ ϝʔλʔΛՃ͍ͯ͘͠ • RSpecͷdescribe࣮Ϋϥεͷఆٛͱಉ͡ͳͷͰ using͕ར༻Ͱ͖Δ
ࠇຐज़ͩΒ͚ ͔͠ΈࠐΈϝιουΛ উखʹ࠶ఆٛ ! Ͱusingͯ͠ͳ͍Օॴʹ ҰӨڹແ͠
·ͱΊ
• Ruby 2.1͔ΒRefinementsͷ੍ݶ͕গ͠؇͘ ͳͬͨ • Refinementsϝιουఆٛͷࣗ༝Λ͛ͯ ͘ΕΔ • ΈࠐΈϝιου໊લඃΓΛؾʹͤͣDSLΛ ఆٛͰ͖Δ
• ·ͩusingએݴͷ੍͕ଟ͍ͷͰɺࠓޙͷਐԽʹ ظ
Let’s Refine !!