FactoryBotはActiveRecord以外のモデルにも使える
FactoryBotの initialize_with メソッドを使うと、オブジェクトを好きな方法で初期化でき、任意のオブジェクトを自在にファクトリー化できます
FactoryBot.define do
factory :citizen_id_image, class: CitizenIdImagePresenter do
image_url { 'https://placehold.it/200x200' }
initialize_with { new(image_url: image_url) }
end
end
build(:citizen_id_image)
#=>
はじめに
FactoryBotは、開発者がテストフィクスチャをその場で定義・作成できる、Ruby on Railsアプリケーション向けの人気のテストツールです。テストデータを柔軟かつ効率的に作成する手段を提供し、テストの記述とメンテナンスを容易にしてくれます。この記事では、RailsのテストでFactoryBotを効果的に使う方法を探ります。
FactoryBotのセットアップ
RailsアプリケーションでFactoryBotをセットアップするには、Gemfileに factory_bot gemを追加し、bundle install コマンドを実行します。その後、config/initializers ディレクトリに factory_bot.rb ファイルを作成してFactoryBotを設定できます。このファイルでは、ファクトリーのパスやデフォルトのストラテジーなど、factory_bot の設定を定義できます。
モデルとファクトリーの定義
FactoryBotにおけるファクトリーとは、オブジェクトを作成するための設計図です。factories ディレクトリにファイルを作成することで、モデルのファクトリーを定義できます。たとえばUserモデルがある場合、factories ディレクトリに user.rb ファイルを作成してユーザーファクトリーを定義できます。このファイルでは、ユーザーファクトリーの属性と関連を定義できます。
ファクトリーのオプションと属性
FactoryBotには、ファクトリーをカスタマイズするためのオプションや属性がいくつか用意されています。たとえば、class 属性で作成するオブジェクトのクラスを指定できます。attributes オプションでファクトリーの属性を定義することもできます。さらに、association オプションでファクトリー間の関連を定義できます。
まとめ
まとめると、FactoryBotはRailsアプリケーションでテストフィクスチャを作成するための強力なツールです。モデルのファクトリーを定義することで、テストデータを素早く効率的に作成できます。柔軟な設定オプションとカスタマイズ可能な属性により、FactoryBotはテストの記述とメンテナンスを容易にしてくれます。この記事で紹介したベストプラクティスに従えば、FactoryBotを最大限に活用してテストの品質を向上させられます。