Umwelt in test_helper.rb Rake Aufgaben zu testen: Kann ich Aufgabe außer Kraft setzen?
Frage
Ich habe eine Reihe von Rake Aufgaben in einem Rakefile die ich als Teil meiner Brille testen möge usw. Jede Aufgabe in Form definiert ist:
task :do_somthing => :environment do
# Do something with the database here
end
Wenn das: Umwelt Aufgabe, eine Activerecord / DataMapper Datenbankverbindung und Klassen einrichtet. Ich bin nicht dazu in der Rails, aber ich habe eine Reihe von Tests, die Ich mag als Teil von BDD auszuführen.
Dieser Code-Schnipsel zeigt, wie ich versuche, die Rake-Aufgaben zu testen.
def setup
@rake = Rake::Application.new
Rake.application = @rake
load File.dirname(__FILE__) + '/../../tasks/do_something.rake'
end
should "import data" do
@rake["do_something"].invoke
assert something_in_the_database
end
Also meine Bitte um Hilfe - ist es möglich, die über-ride: Umwelt Aufgabe in meiner test_helper.rb Datei, damit ich meine Harke Tests mit der Datenbank meines Tests in Wechselwirkung treten, anstatt die Produktion? Ich habe versucht, die Aufgabe in der Helfer-Datei neu zu definieren, aber das funktioniert nicht.
Jede Hilfe für eine Lösung wäre toll, wie ich habe auf diesem für die vergangene Woche aufgeklebt.
Lösung
Meine „Lösung“ zu einem ähnlichen Problem war die gesamte Logik aus meinen .rake Dateien zu extrahieren und Klassen erstellen, um die Aufgaben zu erfüllen, so dass nur einen einzeiligen Anruf in der Rake-Datei, die ich sicher gefühlt in nicht zu testen hart. Die Klassen können dann ziemlich normal getestet werden.
Ich weiß nicht, wie gut dies zu einem komplexen Satz von voneinander abhängigen Aufgaben, die einen weitreichende Zustand zu halten aufstehen würde: wahrscheinlich nicht gut, aber dann wieder, dass die meisten wahrscheinlich ein Hinweis auf einem anderen Design-Problem wäre .. .
Ich bin gespannt, ob ich besser etwas verpasst haben.
EDIT: Es verwendet eine Blog-Post sein hier , dass (a) sagt dasselbe und (b) sagt, es ist besser. Sieht aus wie er sagte, es zuerst auch.
Andere Tipps
Ich glaube, Sie für diese Linie suchen: erfordern (File.join (RAILS_ROOT, 'config', 'Umwelt')) es ist genau das, was Sie in finden „Aufgabe: Umwelt“ Implementierung
Ich benutze es meine Rake Aufgaben zu testen rspec mit
Wenn Sie Tests Umgebung ausgeführt ist, dass geladen wird, ist Test.
, so dass Sie mit Test interagieren Datenbank nur.
Also ich sehe nicht, aus irgendeinem Grund Ihre Rake Aufgabe in test_helper.rb außer Kraft zu setzen