LoginSignup
1

More than 3 years have passed since last update.

[Rspec]Fabricateの基本的な使い方まとめ

Last updated at Posted at 2020-07-30

なんとなく使えてしまうFabricateですが、ふとしたきっかけでちゃんと理解したいなと思ったのでまとめました。

Fabricateとは

オブジェクト生成ライブラリです。
テストで使用するためのオブジェクトを簡単に作成できます。

使い方

非常にシンプルで、モデルの属性に無難なデフォルト値を設定します。
サンプルでpersonというオブジェクトを定義しました。

Fabricator(:person) do
  name "Niki"
  age 23
end

生成メソッド

生成メソッドは3種類あります。よく使うのはFabricate.buildFabricate

Fabriate(:person)
# newしてsaveしたものを返す
Fabricate.build(:person)
# newだけしてsaveはしない
Fabricate.attributes_for(:person)
# 属性のHashを返す

一見Fabricate.buildは必要なくない?となりますが、これは間違いです。
.buildを使うとインスタンスを保存しないので、specの処理時間の軽減につながります。

なので、.buildを使えない場合のみインスタンスを生成し、基本的には.buildを使うようにしています。

属性の値を明示する

定義したオブジェクトの属性の値を変えたい場合は以下の様にします。

person = Fabricate(:person, name: "Peru")
person.name = "Peru"

また、関連しているデータを紐づけることも簡単にできます。
例えば、bookモデルがbelong_topersonモデルに紐づいている場合は以下の様にしてFabricateで表現できます。

Fabricator(:book) do
  name "キングダム"
  price 1000
end

book = Fabricate.build(:book, person: Fabricate.build(:person))

これらは基本的な内容ですが、ちゃんと理解するとテストのコーディングスピードも上がると思います。他にも色々便利なメソッドがありますので暇があれば調べてみて下さい。
何かいいメソッドや書き方があれば、是非コメントください!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1