2016-04-13 24 views
1

ファイルに複数のテストケースを書きました。すべてのテストでrakeタスクを個別に実行したいと思います。私は、このコマンドを使用して、テストケースを実行すると は:Railsの同じファイルでrakeタスクを複数回実行する方法

ruby -I test test/integration/my_test_file.rb 

次にタスクを熊手は一度だけ実行されます。私のテストの多くは失敗しています。 しかし、私は

ruby -I test test/integration/my_test_file.rb -n test_name 

このコマンドで個別にすべて失敗し、テストを実行する場合は、すべてのテストが合格しています。

問題はレーキタスクが最初のケースで1回だけ実行されていることです。 しかし、個々のテストでは、各テストケースごとに毎回Rakeタスクが実行されます。ここ

にはどうすればセットアップrakeタスク私のテストファイル内

require "rake" 
MyAppName::Application.load_tasks 

であり、すべてのテストケースでは、私は、この持っている:

Rake::Task['tasks:my_task_name'].invoke 

それでは、どのように私は私の問題を解決することができますか?

答えて

3

私は答えを得ました。

コントローラファイルまたはテストファイルでrakeタスクを実行するかどうかは、同じスコープ内でRake::Task['tasks:task_name']を再度呼び出す方法です。

Rake::Task['tasks:my_task_name'].invokeが実行されるたびに、フラグ@already_invokedが設定されます。つまり、同じファイル内でそのタスクを再度呼び出すことはできません。 は、だから、の状態が @already_invoked反転しRake::Task['tasks:send_overdue_reminders'].reenableここでは、この

Rake::Task['tasks:my_task_name'].invoke 

Rake::Task['tasks:send_overdue_reminders'].reenable 

行うことができますし、同じファイルにrakeタスクを複数回呼び出すことができます

関連する問題