Erstellen habe ich eine Klasseeinige Klassen während der Tests (STI)
Gate < ActiveRecord::Base
self.inheritance_column = :kindof
# some methods
end
# and derived
MoneyHaters < Gate
# some overloaded methods
end
mit Typ-Spalte: kindof für STI.
Durning Tests Ich möchte ein 2-3 Kinder erstellen. Vor allem, weil jede abgeleitete Klasse in der App eindeutig sein muss. Wie folgt aus:
factory :gate do
before(:create) do
gate_name = FFaker::Company.name.gsub(/\s+/,'')
gate_class_name = gate_name.singularize.classify
end
name { gate_name }
# I want that next class will be declared in App namespace, like all others.
gate_class = Class.new(Gate) do
def comission_in(amount)
amount * 0.01 + 5
end
def comission_out(amount)
amount * 0.02 + 5
end
end
Object.const_set(gate_class_name, gate_class)
type { gate_class_name }
country { FFaker::Address.country_code }
end
-Code gab mir Fehler, wenn sie mit rspec in line "Object.const_set" lief
TypeError: #<FactoryGirl::Declaration::Implicit:0x00000006a1af30 @name=:gate_class_name, @ignored=false, @factory=#<FactoryGirl::Definition:0x00000006ed6df8 @declarations=#<FactoryGirl::DeclarationList:0x00000006ed6dd0 @declarations=[#<FactoryGirl::Declaration::Dynamic:0x00000006ed6998 @name=:name, @ignored=false, @block=#<Proc:[email protected][skipped]>>, #<FactoryGirl::Declaration::Implicit:0x00000006a1af30 ...>], @name=:gate, @overridable=false>, @callbacks=[#<FactoryGirl::Callback:0x00000006ed6a38 @name=:before_create, @block=#<Proc:[email protected][skipped]>>], @defined_traits=#<Set: {}>, @to_create=nil, @base_traits=[], @additional_traits=[], @constructor=nil, @attributes=nil, @compiled=false>> is not a symbol nor a string
aber funktioniert ok in Schienen Konsole
Normalerweise nenne ich factory Fabriken für die Erstellung von Objekten Aber, wenn das nicht möglich ist - ich frage mich nach einer anderen Methode, das zu tun.
Jede Hilfe wird sehr geschätzt.
nicht sicher, warum benötigen Sie spezielle Klassen für Tests. Kannst du die schon vorhandenen nicht benutzen? –
Vielleicht verwenden Sie STI falsch? –
Code in Kommentaren ist nicht lesbar. Leg das in die Frage. –