autotestでRAILS_ROOT/lib以下のファイルをテストする
This article was migrated from http://rai
Railsじゃない場合のやり方はsecondlife
先に結論だけ書いておくと、RAILS_ROOT
Autotest.a使い方は、lib/foo_bar.rb のテストをtest/lib/foo_bar_test.rbに書けばOK。 あとは普通にRailsでautotestを使うときとおんなじです。dd_hook :run do |autotest| class RailsAutot est < Autotest alias __tests_for_file tests_for_file def tests_for_file(filename) case filename when /^lib\/.*\.rb$/ then impl = File.basename(filename).gsub '_', '_?' impl.sub!(/\.rb$/, '_test.rb') @files.keys.select do |k| k =~ %r%^test/lib/#{ impl }$% end when /^test\/.*_test\.rb$/ then [filename] else __tests_for_file(filename) end end end end
autotestは、config/environment.rbの有無によって自動的にRailsアプリケーション であるかどうかを判別します。その場合、通常のAutotestクラスではなく、Autotestクラスから派生したRailsAutotestクラスが使われるので、こちらのクラスのtests_for_fileに手を加える必要があります。
また、わけありでconfig/environment.rbを削除しているような場合は、autotestの起動時に
$ autotest -railsと、-railsオプションを指定することで明示的にRailsモードで起動できます。
<追記>
lib以下のファイルをテストするためのRakeタスク:
require 'rake' require 'rake/testtask' namespace :test do desc 'Test libs.' Rake::TestTask.new(:libs) do |t| t.pattern = File.join(RAILS_ROOT, 'test/lib/**/*_test.rb') t.verbose = true end end
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/132