Ich möchte in jedem spezifischen Test nur Assoziationen mit ID erstellen, um zu vermeiden, sie in der Fabrik zu definieren. Ich verfolge Rails 4 Test PrescriptionsBuild-in-Test-Assoziationen mit 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
Dies ist, was ich will
test "" do
project_with_id = build_stubbed(:project)
workspace_with_id = build_stubbed(:workspace)
workspace_with_id.projects.push(project_with_id)
end
I build_stubbed bin mit gültigen IDs zu erstellen, die den folgenden Fehler gibt:
*** RuntimeError Exception: stubbed models are not allowed to access the database - Project#save({:validate=>true})
Also, lesen Fabrik Mädchen documentation Ich kam mit Arbeitsvereinigungen aber ich will sie nicht in der Fabrik definieren, nicht einmal mit Merkmalen.
FactoryGirl.define do
factory :project do
association :workspace, strategy: :build_stubbed
end
end
test "" do
project = build_stubbed(:project)
end
Dies funktioniert, weil ich project.workspace nennen kann, und beide haben eine gültige ID
Wie kann ich gültige Verbände (mit Ausweis), aber ohne die Datenbank zu berühren, nur Factory-Mädchen mit auf unabhängige Objekte erstellen?
sind Sie rspec mit? –
Frage ist mit MiniTest so markiert, dass es ziemlich sicher ist, keine anzunehmen – max