Kann nicht Zugang Samen in meinen Fabriken beim Laufen Rails Unit-Tests
-
09-10-2019 - |
Frage
Ich habe Fabriken, die einige Setup-Daten enthalten. Zum Beispiel:
Factory.define :event do |event|
event.name { Factory.next(:email) }
event.blurb "Test event blurb"
event.association(:owner, :factory => :user)
event.countries Country.all
end
Country.all weist nur alle Länder von einer Lookup-Tabelle auf die jeweilige Veranstaltung. Ich schließe alle Länder durch Läden Samen, bevor ich meine Tests mit dieser Linie in meinem Test Helfer laufen:
require "#{Rails.root}/db/seeds.rb"
Dies funktioniert gut, wenn einzelne Unit-Tests ausgeführt werden:
ruby test/unit/event_test.rb
Allerdings Country.all gibt nichts, wenn ich den Test ausführen mit:
rake test:units
Wer weiß, warum dies geschieht?
Lösung
Sie benötigen Samen in der test_helper, es einmal geladen. Nach jedem Testlauf Datenbank ausgelöscht ist, einschließlich ausgesät Daten. Um Samen jedes Mal laden zu machen, fügen Sie etwas zu ActiveSupport::TestCase
Klassendefinition Ihre test_helper Jahren.
class ActiveSupport::TestCase
# this line:
setup { load "#{Rails.root}/db/seeds" }
end
Andere Tipps
Haben Sie einen Blick auf den Quellcode für die rake
gem. Es sieht aus wie Sie Ihre seeds.rb
werden Datei manuell in jeder Test-Datei laden müssen, oder besser noch, von test_helper.rb
.