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