1. ホーム
  2. ruby

[解決済み] FactoryGirlのbuildメソッドとcreateメソッドの違いは何ですか?

2022-10-31 03:06:27

質問

ファクトリーガールの紹介 との違いを説明します。 FactoryGirl.build()FactoryGirl.create() :

# Returns a User instance that's not saved
user = FactoryGirl.build(:user)

# Returns a saved User instance
user = FactoryGirl.create(:user)

私はまだこの2つの実用的な違いを理解していません。どなたか、どちらかを使って、もう一方は使わないという例を教えていただけませんか?ありがとうございます。

どのように解決するのですか?

この create() メソッドはモデルのインスタンスを持続させ、一方 build() メソッドはモデルのインスタンスをメモリ上にのみ保持します。

個人的には create() メソッドを使うのは、DBに書き込むとテストに時間がかかるので、永続化が本当に必要なときだけです。

など。

で認証するユーザーを作成します。 create() で認証するユーザーを作成し、認証エンジンがDBに問い合わせるからです。

モデルが属性を持つかどうかを確認するために build() メソッドで行うことができます。

it{Factory.build(:user).should respond_to(:name)}

更新情報

つまり、関連付けはもはやメモリ内ではなく、永続化されます。このことを心に留めておいてください。