事前に用意したテストデータを読み込み、常にDBの内容を一定に保つための仕組みのことを、フィクスチャと呼ぶ
test/fixtures/テーブル名.yml
rubyonrails:
id: 1
name: Ruby on Rails
url: http://www.rubyonrails.org
google:
id: 2
;name: Google
url: http://www.google.com
require 'test_helper'
class WebSiteTest < ActiveSupport::TestCase
test "web_site_count" do
assert_equal 2, WebSite.count
end
end
require 'test_helper'
class SiteTest < ActiveSupport::TestCase
fixtures :sites
def test_google_fixture
# フィクスチャ名を指定して使用
google = sites(:google)
assert_equal "http://www.google.com", google.url
end
def test_google_fixture_from_db
# findメソッドなどでDBからロードして使用
google = Site.find(2)
# フィクスチャ名で取得したものと同じであることを検証
assert_equal sites(:google), google.url
end
end
フィクスチャに含まれているデータはテストの実行時に使うものだがmこれを使ってデータをロード
$ mkdir db/migrate/dev_data
$ ruby script/generate migration <マイグレーション名>
require 'active_recode/fixtures'
class <クラス名> < ActiveRecode::Migration
def self.up
down
directory = File.join(File.dirname(__FILE__), 'dwv_data')
Fixtures.create_fixtures(disrectory, "<YAML名>")
end
def self.down
<YAML名>.delete_all
end
end