72
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FactoryBotにおけるcreateとbuildの違い

Last updated at Posted at 2019-05-20

FactoryBot(factory_bot_rails)にはinstanceを作るメソッドで buildcreateが用意されている。

以前の職場で自動テストが重すぎて開発に支障が出ていた。
その時に話題に上がったのがテスト中にDBアクセスが多すぎることだった。
その時 createする必要がないものは buildにしましょうという事になったが、どういうことか全く理解してなかった。

なので、今回は buildcreateの違いを理解してみる。

build

メモリ上にインスタンスを確保する。
DB上にはデータがないので、DBにアクセスする必要があるテストのときは使えない。
DBにアクセスする必要がないテストの時には、インスタンスを確保する時にDBにアクセスする必要がないので処理が比較的軽くなる。

create

DB上にインスタンスを永続化する。
DB上にデータを作成する。
DBにアクセスする処理のときは必須。(何かの処理の後、DBの値が変更されたのを確認する際は必要)

参考

72
55
1

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
72
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?