Je souhaite pouvoir créer des associations avec ID uniquement dans chaque test spécifique, en essayant d'éviter de les définir en usine. J'ai suivi Rails 4 Test PrescriptionsCréer des associations dans test en utilisant Factory_girl
Avoid defining associations automatically in factory_girl definitions. Set them test by test, as needed. You’ll wind up with more manageable test data.
class Workspace < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
belongs_to :workspace
end
Ce que je veux
test "" do
project_with_id = build_stubbed(:project)
workspace_with_id = build_stubbed(:workspace)
workspace_with_id.projects.push(project_with_id)
end
J'utilise build_stubbed pour créer de valides d'identité, ce qui donne l'erreur suivante:
*** RuntimeError Exception: stubbed models are not allowed to access the database - Project#save({:validate=>true})
Donc, en lisant les documentation fille de l'usine, je suis venu avec des associations de travail , mais je ne veux pas les définir en usine, pas même avec des traits.
FactoryGirl.define do
factory :project do
association :workspace, strategy: :build_stubbed
end
end
test "" do
project = build_stubbed(:project)
end
Cela fonctionne parce que je peux appeler project.workspace, et les deux ont une carte d'identité valide
Comment puis-je créer des associations valides (avec ID), mais sans toucher à la base de données, en utilisant uniquement girl Factory créer des objets indépendants?
vous utilisez rspec? –
question est étiqueté avec minitest donc c'est assez sûr de supposer non – max