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
ぼくらのかんがえたさいきょうのfactory_bot
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takakuda
June 26, 2019
0
2.6k
ぼくらのかんがえたさいきょうのfactory_bot
takakuda
June 26, 2019
Tweet
Share
More Decks by takakuda
See All by takakuda
パフォーマンス改善
takakuda
0
160
gem version up
takakuda
0
2.3k
リファクタリング
takakuda
0
46
LINE, Messenger比べてみました。
takakuda
0
1.4k
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
170
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
My Coaching Mixtape
mlcsv
0
45
Agile that works and the tools we love
rasmusluckow
331
21k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
370
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
WCS-LA-2024
lcolladotor
0
430
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
420
Designing Powerful Visuals for Engaging Learning
tmiket
0
210
Transcript
ZEALS Co.,Ltd ぼくらのかんがえたさいきょうの factory_bot RSpec テクノロジー開発部 takakuda
前職:雛人形売り - Ruby - Rails ZEALS Rails Engineer takakuda :takakuda
: @kutaike1504
fanpの紹介
factory_bot
ZEALSのfactory_botの歴史
今日話すこと - default時代 - 一発作成時代 - 今
default時代 普通にfactory_botを使っていた after(:create)などはほとんどない traitが少しあるくらい
letがめちゃくちゃ多くなる - databaseが結構正規化されている - テスト対象のデータを作成するのが大変 - 可読性が低く、無理やりテストを通すようになる (それって本当にテストなの?状態)
無理やりデータを揃える
letが8個くらいつながってしまうと どんなテストデータが作成されているのかを 把握することが困難 テストデータの帳尻合わせるためにbeforeでupdateを 行う
テストカバレッジ98%(…すごい) …のにバグが発生し続ける -> テストで作成されるデータが間違ってるんじゃない? -> まちがったデータで作成されたテストをひたすら通し ていた
一発作成時代 - let書きまくり時代からの解放 - association, after(:create), traitsをフル活用 - 正しいテストデータを作成できるようにする -
メンバーのRSpecを書く効率を上げたかった
factory_botでむすこを作 成すると、一番上のじい ちゃんまで作成されるよう に変更
良かった点 - letの数が確実に減った(可読性 ↑) - before内でupdateを使うことがなくなる - テストデータが齟齬ることがなくなる
実際にconsoleで見せます!
悪かった点 - かなり工数かかる(1ヶ月 factory_botリファクタ) - メンテ、共有のコスト - 全部作成してしまうのでテストに関係のないデータま でも作成してしまう -
全部作成する必要があるのか?問題
全部作らなければいけない理由 認証
今
認証を回避
テストのためにソースコードに変更を加えるようなことは しないほうが良い
認証部分をstubしちゃう
factory_botで全部作る必要 がなくなる
shared_context テストにおける条件を共有する
- やりすぎfactory_botをやめる - 認証部分はstub - 複雑なテスト前提条件shared_context
DRYに書きすぎて読みづらく ならないように バランスを考えて読みやすさ を重視する
まとめ
これからも改善続けます…! factory_botのベスト・プラクティ ス的なの持ってる方は是非教え てください!
None
Thank you!!