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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top