日常的に rails アプリを開発している時、「開発や動作の確認用にデータがたくさん欲しいな」と思うことがあるかと思います。
そんな時は、コンソールからデータを作成してやるのが常套句ですが……
bundle exec rails console
[1] pry(main)> tweet = Tweet.new
[2] pry(main)> tweet.body = "Hello, My Twitter Clone!"
[3] pry(main)> twwet.save!
現実のデータって、こんなに優しくありませんよね?
- user_id が必要!? ってことは、
User
インスタンスも作らなくちゃ…… -
User
には認証方式も必要なのか? 何? カテゴリも? - 一体どれくらい依存関係があるんだ……
RSpec や Test::Unit で fixture を使っている時も同じような問題が起き、解決策として FactoryGirl が登場しました。
この FactoryGirl 、実はすごく簡単にコンソールから使用できるんです!
bundle exec rails console
[1] pry(main)> require "factory_girl_rails"
[2] pry(main)> FactoryGirl.create_list(:tweets)
そう。 require
するだけ!
あとは簡単に、良い感じのデータを開発環境でどんどん作れます!
こんな感じの spec を用意しておいて、factory を単体で動かせるように保っておけば、テストも開発もグンとしやすくなるかもしれませんね!
describe "FactoryGirl の factory" do
FactoryGirl.factories.each do |factory|
it "ファクトリ '#{factory.name}' は単体で呼び出したとき、データ整合性がバッチリ" do
expect(FactoryGirl.build(factory.name.to_sym)).to be_valid
end
end
end