J'utilise FactoryGirl et RSpec pour tester mon code. Mongoid dans mon ORM. Le problème que je rencontre est que pour créer un document incorporé, vous devez également créer le document parent. Voici un exemple:Comment créer des documents incorporés à l'aide de FactoryGirl?
# 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
Alors je fais des usines pour ces deux:
# 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
Le problème que j'ai maintenant que je ne peux jamais appeler FactoryGirl.create (: ingrédient). La raison étant que Ingredient
est intégrée, et mon usine Ingredient
ne déclare jamais l'association à la recette. Si je déclare une association à la recette, alors j'obtiens une boucle infinie parce que la recette s'associe à l'ingrédient, et l'ingrédient s'associe à la recette. C'est assez ennuyeux parce que je ne peux pas tester mon cours Ingredient correctement. Comment puis-je résoudre ce problème?