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.7k
ぼくらのかんがえたさいきょうの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
47
LINE, Messenger比べてみました。
takakuda
0
1.4k
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Cult of Friendly URLs
andyhume
79
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Skip the Path - Find Your Career Trail
mkilby
1
86
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
Game over? The fight for quality and originality in the time of robots
wayneb77
1
140
AI: The stuff that nobody shows you
jnunemaker
PRO
3
450
Code Reviewing Like a Champion
maltzj
528
40k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
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!!