テストで特定メソッドでのみフィクスチャを読み込む
テストにフィクスチャ(テストデータ)は欠かせない。普通、次のように使う。
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 を参照のこと)