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
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
150
gem version up
takakuda
0
2.3k
リファクタリング
takakuda
0
40
LINE, Messenger比べてみました。
takakuda
0
1.4k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Rails Girls Zürich Keynote
gr2m
94
14k
The Language of Interfaces
destraynor
158
25k
Designing for humans not robots
tammielis
253
25k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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!!