2016-04-13 4 views
1

Wir haben einige Tests geschrieben, die notwendig sind, aber sehr langsam. Daher haben wir RSpec so konfiguriert, dass sie ausgenommen von Solano ausgeschlossen werden, wo wir eine ENV-Variable einrichten.Wie kann RSpec in einer Rake-Task aufgerufen werden?

# spec_helper 
unless ENV['RUN_ALL_TESTS'] == 'true' 
    config.filter_run_excluding :slow 
end 

das funktioniert, aber ich versuche, eine Harke Aufgabe schreiben wir jeden Test vor Ort auszuführen, indem die gleiche ENV Variable gesetzt und dann läuft die Suite aufrufen können. Ich habe Probleme herauszufinden, wie ich RSpec auslösen kann. Das ist, was ich jetzt habe:

# all_tests.rake 
require 'rspec/core/rake_task' 

desc 'Run all tests, even those usually excluded.' 
task all_tests: :environment do 
    ENV['RUN_ALL_TESTS'] = 'true' 
    RSpec::Core::RakeTask.new(:spec) 
end 

Wenn ich es ausführen, führt es keine Tests aus.

Die meisten Dinge, die ich gefunden habe, ist zum Auslösen einer Rake-Aufgabe innerhalb eines Tests, Testen einer Rake-Aufgabe oder Einrichten einer Rakefile. Wir verwenden rspec-rails, unsere Standard-Rake-Aufgabe ist bereits eingerichtet.

+0

klingt wie du bist nach http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+0

Das sieht definitiv so aus, wie ich danach bin, aber Ich vermisse noch etwas, weil 'Rake :: Task ['spec']. Invoke' und' Rake :: Task ['default']. Invoke' immer noch nichts tun. –

+0

Haben Sie versucht, nur 'RUN_ALL_TESTS = True Rake Spec' zu verwenden? –

Antwort

1

Um RSpec durch seine Harke Integration auszuführen, müssen Sie sowohl eine Aufgabe definieren und aufzurufen:

# all_tests.rake 
require 'rspec/core/rake_task' 

# Define the "spec" task, at task load time rather than inside another task 
RSpec::Core::RakeTask.new(:spec) 

desc 'Run all tests, even those usually excluded.' 
task all_tests: :environment do 
    ENV['RUN_ALL_TESTS'] = 'true' 
    Rake::Task['spec'].invoke 
end 

Rake::Task['spec'].invoke nichts tat, wenn man es versucht, weil Harke einen Tasknamen dreht, die kein Name von a Definierter Task aber ist ein Dateiname in Rake::FileTask, sowohl in der Befehlszeile als auch in Rake::Task. Sie hatten keine 'spec' Aufgabe definiert, aber Sie haben ein spec Verzeichnis, so rake spec lief ohne Fehler und tat nichts.

+0

Danke! Das hat es getan. –