ぼくらのかんがえたさいきょうのfactory_bot
by
takakuda
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ZEALS Co.,Ltd ぼくらのかんがえたさいきょうの factory_bot RSpec テクノロジー開発部 takakuda
Slide 2
Slide 2 text
前職:雛人形売り - Ruby - Rails ZEALS Rails Engineer takakuda :takakuda : @kutaike1504
Slide 3
Slide 3 text
fanpの紹介
Slide 4
Slide 4 text
factory_bot
Slide 5
Slide 5 text
ZEALSのfactory_botの歴史
Slide 6
Slide 6 text
今日話すこと - default時代 - 一発作成時代 - 今
Slide 7
Slide 7 text
default時代 普通にfactory_botを使っていた after(:create)などはほとんどない traitが少しあるくらい
Slide 8
Slide 8 text
letがめちゃくちゃ多くなる - databaseが結構正規化されている - テスト対象のデータを作成するのが大変 - 可読性が低く、無理やりテストを通すようになる (それって本当にテストなの?状態)
Slide 9
Slide 9 text
無理やりデータを揃える
Slide 10
Slide 10 text
letが8個くらいつながってしまうと どんなテストデータが作成されているのかを 把握することが困難 テストデータの帳尻合わせるためにbeforeでupdateを 行う
Slide 11
Slide 11 text
テストカバレッジ98%(…すごい) …のにバグが発生し続ける -> テストで作成されるデータが間違ってるんじゃない? -> まちがったデータで作成されたテストをひたすら通し ていた
Slide 12
Slide 12 text
一発作成時代 - let書きまくり時代からの解放 - association, after(:create), traitsをフル活用 - 正しいテストデータを作成できるようにする - メンバーのRSpecを書く効率を上げたかった
Slide 13
Slide 13 text
factory_botでむすこを作 成すると、一番上のじい ちゃんまで作成されるよう に変更
Slide 14
Slide 14 text
良かった点 - letの数が確実に減った(可読性 ↑) - before内でupdateを使うことがなくなる - テストデータが齟齬ることがなくなる
Slide 15
Slide 15 text
実際にconsoleで見せます!
Slide 16
Slide 16 text
悪かった点 - かなり工数かかる(1ヶ月 factory_botリファクタ) - メンテ、共有のコスト - 全部作成してしまうのでテストに関係のないデータま でも作成してしまう - 全部作成する必要があるのか?問題
Slide 17
Slide 17 text
全部作らなければいけない理由 認証
Slide 18
Slide 18 text
今
Slide 19
Slide 19 text
認証を回避
Slide 20
Slide 20 text
テストのためにソースコードに変更を加えるようなことは しないほうが良い
Slide 21
Slide 21 text
認証部分をstubしちゃう
Slide 22
Slide 22 text
factory_botで全部作る必要 がなくなる
Slide 23
Slide 23 text
shared_context テストにおける条件を共有する
Slide 24
Slide 24 text
- やりすぎfactory_botをやめる - 認証部分はstub - 複雑なテスト前提条件shared_context
Slide 25
Slide 25 text
DRYに書きすぎて読みづらく ならないように バランスを考えて読みやすさ を重視する
Slide 26
Slide 26 text
まとめ
Slide 27
Slide 27 text
これからも改善続けます…! factory_botのベスト・プラクティ ス的なの持ってる方は是非教え てください!
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
Thank you!!