FactoryBot(factory_bot_rails)にはinstanceを作るメソッドで build
と create
が用意されている。
以前の職場で自動テストが重すぎて開発に支障が出ていた。
その時に話題に上がったのがテスト中にDBアクセスが多すぎることだった。
その時 create
する必要がないものは build
にしましょうという事になったが、どういうことか全く理解してなかった。
なので、今回は build
と create
の違いを理解してみる。
build
メモリ上にインスタンスを確保する。
DB上にはデータがないので、DBにアクセスする必要があるテストのときは使えない。
DBにアクセスする必要がないテストの時には、インスタンスを確保する時にDBにアクセスする必要がないので処理が比較的軽くなる。
create
DB上にインスタンスを永続化する。
DB上にデータを作成する。
DBにアクセスする処理のときは必須。(何かの処理の後、DBの値が変更されたのを確認する際は必要)