Railsのプラグインは非常に便利な仕組みなのですが、pluginのテスト
とうまく付き合うにはちょっと工夫が必要です。

plugin用に書かれているテストは、二通りの方法で実行される可能性があります。

  1. plugin ディレクトリの中で rake コマンドた実行された場合
  2. RAILS_ROOT から rake test:plugins が実行された場合

いくつかのプラグインは、上記の片方のケースのみを想定して
test が書かれている場合があり、想定されていないケースからテスト
が実行された場合、多くは沢山のエラーを出すようになります。

このような場合、プラグインディレクトリのRakefileに手を加えて、
呼び出し元に応じて処理を分けたりすれば、一見うまくいきそうですが、
そう簡単にはいきません。

Railsの test:plugins の仕組みは、プラグインディレクトリの
Rakefileを参照せずに、直接 test ディレクトリの中身を実行する
からです。

この挙動はあまり良くないと思うのですが、とりあえず、
rake test:plugins から実行するとエラーを出すプラグインの
テストディレクトリの名前を plugin_test 等に変更して、
プラグインのRakefileを以下のように書き換えることで回避できます。

Rakefile

ruby>>
desc 'Test the acts_as_taggable_on_steroids plugin.'
Rake::TestTask.new(:test) do |t|
t.libs << 'lib'
t.pattern = 'plugin_test/**/*_test.rb'
t.verbose = true
end
<<--

これによって、上記 1 のケースでは正常に動作し、2 のケースではSkipされるため、エラーの山を見ることから逃れられます。

posted by genki genki on Thu 15 Nov 2007 at 02:14 with 0 comments