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.5k
ぼくらのかんがえたさいきょうの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
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Navigating Team Friction
lara
183
15k
GraphQLとの向き合い方2022年版
quramy
44
14k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Typedesign – Prime Four
hannesfritz
41
2.5k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Side Projects
sachag
452
42k
Rails Girls Zürich Keynote
gr2m
94
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
GitHub's CSS Performance
jonrohan
1030
460k
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!!