テストで特定メソッドでのみフィクスチャを読み込む

テストにフィクスチャ(テストデータ)は欠かせない。普通、次のように使う。

class FooTest < Test::Unit::TestCase
  fixtures :foos, :bars # 読み込む対象のフィクスチャを指定
  
end

こうするとテストのメソッドが呼ばれる前に test/fixturs にあるフィクスチャファイル (テーブル名.yml) をデータベースにロードしてくれる。
(実際にはキャッシュされるので、テストのメソッドが呼ばれるたびにデータベースにデータがロードされるわけではない・・・もしそうならあまりに遅すぎる)

もし特定のメソッドでだけフィクスチャーをロードしたければどうするか? Fixtures.create_fixtures を使う。

class FooTest < Test::Unit::TestCase
  def test_foo
    Fixtures.create_fixtures(fixture_path, :bars) 
    # => bars.yml の内容がデータベースへ読み込まれる。
    # => 
    ...
  end
end

私はよく

% cd test/unit
% ruby foo_test.rb -n /test_foo/

みたいに -n オプションで特定のテストメソッドだけを実行するので、こういう使い方をする人には便利かも。ときどき巨大なフィクスチャーをロードするときがあるからね。
(詳しくは、ソースコード activerecord/lib/active_record/fixtures.rb を参照のこと)