rspecで関連するモデルもfactoryで簡単に同時に生成する方法
rspecで関連するモデルを同時に生成する方法があります。
下記のような所有関係を持っていたとします。
class User < ActiveRecord::Base has_many :posts end
class Post < ActiveRecord::Base belongs_to :user end
Factoryの書き方です
FactoryGirl.define do factory :user do email 'hoge@hoge.com' password 'password' password_confirmation 'password' end end
FactoryGirl.define do factory :comment do user ←ここで関連するfactoryを書いておけば、自動で読み込んでくれる body "MyText" end end
表示確認
[2] pry(#<RSpec::ExampleGroups::CommentsController>)> User.all => [#<User:0x007f84da107cf8 id: 1, email: "hoge@hoge.com", crypted_password: "$2a$10$YMAObLcAlCm3./ZS/g5Dcu5126E2Eq1Z4CGI9zkbVWSHYDrVS7kYS", salt: "2WyQbT9XALMEUcgG6158", created_at: Wed, 25 May 2016 07:51:01 JST +09:00, updated_at: Wed, 25 May 2016 07:51:01 JST +09:00, admin: false>]
まとめ
同時に作ることを前提とする場合は、factoryに関連するfactoryも書いておけば、勝手に作ってくれます。