月曜日, 12月 10, 2012

データベースにテストデータ挿入

データベースにテストデータを入れたい場合、fixture というものを使用します。

以下の様に model を作成した場合、test/fixtures 以下に、xxx.yml が作成されます。
$ rails generate model user
      invoke  active_record
      create    db/migrate/20121204111949_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/unit/user_test.rb
      create      test/fixtures/users.yml
このファイル (test/fixtures/users.yml) に、テストデータを記入します。

以下がその例

# test/fixtures/users.yml
<% 1.upto(3) do |n| %>
user<%= n %>:
  name: ユーザー<%= n %>
<% end %>

また、アソシエーションで外部キーを設定したい場合は、結び付けたいデータのラベル名を指定します。
# test/fixtures/articles.yml
<% 1.upto(3) do |n| %>
<% 1.upto(5) do |m| %>
article<%= n %>-<%= m %>:
  user: user<%= n %> #user1ラベルを指定
  name: 記事<%= m %>
<% end %>


また、この様に外部キーを設定する場合、model に リレーションの設定をしなければなりません (めっちゃハマった.........(´;ω;`)ブワッ)

この場合は、
# models/article.rb
class Article < ActiveRecord::Base
  belongs_to :user # この記述が必要!!
end
のように、belongs_toを指定します。

この様にして、fixtureファイルを作成したら、rake db:fixtures:load コマンドを実行
$ rake db:fixtures:load

これでテストデータが挿入されます。

0 件のコメント:

コメントを投稿