FactoryBotのデータ生成に関する疑問を調べた
- はじめに
- FactoryBot
- FactoryBotで定義したデータはどのタイミングで生成されるのか
- FactoryBotのデータ生成は時間がかかるのか
- 特定のFactoryBotのデータ生成のみを行うことができるのか
- おしまい
はじめに
プロジェクトが大きくなってくるにつれてテストの実行時間を最適化することも開発において重要です。
FactoryBotで実運用に近いパターンをすべて処理すると重くなりがちなので解決策を考える上での疑問をまとめています。
FactoryBot
FactoryBotはテストデータを簡単に作成するためのライブラリで、テストの準備段階で用いられることが一般的。
テスト中に生成するテストデータを定義することができます。
FactoryBotで定義したデータはどのタイミングで生成されるのか
FactoryBotの定義があるだけではデータは生成されず、create
やbuild
などのメソッドを使って明示的に生成する必要があります。(テスト実行時に毎回すべて生成されるわけではない)
let
を使用してFactoryBotのインスタンスを定義した場合、そのlet
が初めて呼び出されたときにデータが生成されます。
FactoryBotのデータ生成は時間がかかるのか
FactoryBotを使用してテストデータを生成する際の時間は、データの複雑さ、データベースのパフォーマンス、生成するデータの量などによります。
特定のFactoryBotのデータ生成のみを行うことができるのか
タグ機能を使って、その中でletを使って呼び出せば良いです。
# spec/models/person_spec.rb RSpec.describe Person, type: :model do describe "担当者Aのテスト", :tag_name do let(:person) { create(:person) } it "担当者Aの名前が正しいこと" do expect(person.name).to eq "担当者A" end end describe "担当者Bのテスト", :tag_name do let(:role) { create(:person, :b_person) } it "担当者Bのテストの名前が正しいこと" do expect(person.name).to eq "担当者Bのテスト" end end
おしまい
コメント
本記事の内容は以上になります!
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。