2016-04-13 26 views
1

私たちは必要なテストを書きましたが、非常に遅いです。そこで、我々はENV変数を設定するSolano以外のRSpecを除外するように設定しました。rakeタスクの中でRSpecを呼び出す方法は?

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

動作しますが、私たちはその同じENV変数を設定して、スイートを実行することにより、局部的にすべてのテストを実行するために呼び出すことができますrakeタスクを記述しようとしています。私はRSpecを起動する方法を理解するのに苦労しています。これは私が今持っているものです:

# 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 

実行すると、テストは実行されません。

私が見つけたもののほとんどは、テストの中でレーキタスクを起動したり、レーキタスクをテストしたり、Rakefileを設定したりするためのものです。 rspec-railsを使用していますが、デフォルトのレーキタスクは既に設定されています。そのすくい統合により、RSpecのを実行するには

+0

あなたは後になっているように聞こえます。http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+0

これは間違いなく私が後になったようですが、 'Rake :: Task ['spec']。invoke'と' Rake :: Task ['default']。invoke'は何もしないので、まだ何かが欠けています。 –

+0

'RUN_ALL_TESTS = true rake spec'を試しましたか? –

答えて

1

は、タスクを定義し、それを呼び出すために、両方の必要があります。

# 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レーキは、Aの名前ではありませんタスク名を回すので、あなたがそれをしようとしたときに何もしませんでしたコマンド行とRake::Taskの両方にあるRake::FileTaskのファイル名です。 'spec'タスクは定義されていませんでしたが、specディレクトリがあるため、rake specはエラーなしで実行され、何もしませんでした。

+0

ありがとう!それがそれでした。 –

関連する問題