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.4k
ぼくらのかんがえたさいきょうの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
39
LINE, Messenger比べてみました。
takakuda
0
1.4k
Featured
See All Featured
Docker and Python
trallard
40
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Become a Pro
speakerdeck
PRO
24
4.9k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
How to train your dragon (web standard)
notwaldorf
88
5.6k
Building Adaptive Systems
keathley
38
2.2k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.3k
Optimising Largest Contentful Paint
csswizardry
31
2.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Adopting Sorbet at Scale
ufuk
73
9k
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!!