FactoryGirl と RSpec を使用してコードをテストしています。私のORMのモンゴイド。私が直面している問題は、埋め込みドキュメントを作成するには、親ドキュメントも作成する必要があるということです。次に例を示します。
# app/models/recipe.rb
class Recipe
include Mongoid::Document
field :title
embeds_many :ingredients
end
# app/models/ingredient.rb
class Ingredient
include Mongoid::Document
field :name
embedded_in :recipe
end
次に、これらの両方のファクトリを作成します。
# spec/factories/recipes.rb
FactoryGirl.define do
factory :recipe do |f|
f.title "Grape Salad"
f.association :ingredient
end
end
# spec/factories/ingredients.rb
FactoryGirl.define do
factory :ingredient do |f|
f.name "Grapes"
end
end
私が今抱えている問題は、FactoryGirl.create(:ingredient) を呼び出せないことです。その理由Ingredient
は埋め込まれており、私のIngredient
工場はレシピへの関連付けを宣言しません。レシピへの関連付けを宣言すると、レシピが材料に関連付けられ、材料がレシピに関連付けられるため、無限ループが発生します。Ingredient クラスを正しく単体テストできないため、これは非常に面倒です。どうすればこの問題を解決できますか?