Ruby on Rails 2.3でテストを実行すると、undefined method `use_transactional_fixtures=’というエラーになるときの対策

Ruby on Rails 2.3でテストを実行すると

./test/unit/../test_helper.rb:23: undefined method `use_transactional_fixtures=’ for Test::Unit::TestCase:Class (NoMethodError)

というエラーになるときの対策です。

Ruby on Rails 2.3では、TestCaseクラスをTest::Unit::TestCaseからActiveSupport::TestCaseに変更する必要があります。

RAILS_ROOT/test/test_helper.rbを修正します。

#class Test::Unit::TestCase #Ruby on Rails 2.2以前
class ActiveSupport::TestCase #Ruby on Rails 2.3以降

RAILS_ROOT/test/unit/にある*.test.rbもすべて修正します。

#class SampleTest < Test::Unit::TestCase #Ruby on Rails 2.2以前
class SampleTest < ActiveSupport::TestCase #Ruby on Rails 2.3以降

Ruby on Rails 2.0で、ActionController::TestCaseのsetupにバグがあったため、Ruby on Rails 1.2と同じようにFunctionalTestにもTest::Unit::TestCaseを使っているケースがあります。
ActionController::TestCaseのsetupにバグは、Ruby on Rails 2.1で修正されているようですから、ActionController::TestCaseを使うようにします。

RAILS_ROOT/test/functional/にある*.test.rbもすべて修正します。

#class SampleTest < Test::Unit::TestCase #Ruby on Rails 2.2以前
class SampleTest < ActionController::TestCase #Ruby on Rails 2.3以降

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください