私は罪を犯してきた間、ほぼ4年間レールを使用してきました。私は単一のテストを書いたことはありません。自分が犯してきた大きな過ちに気付くのになぜこれほど時間がかかったのかはわかりませんが、今はそうしています。開発を変えて、TDD の利用を開始したいと考えています。しかし、そのためには、現在取り組んでいるアプリケーションのテスト スーツを構築する必要があります。rspec と factory_girl のセットアップが完了し、少しずつ理解し始めています。テストしようとしているかなり複雑なモデルがいくつかあり、立ち往生しています。ここに私が持っているものがあります:
class BusinessEntity
has_many :business_locations
class BusinessLocation
belongs_to :business_entity
has_many :business_contacts
validates :business_entity_id, :presence => true
class BusinessContact
belongs_to :business_location
has_many :business_phones
validates :business_location_id, :presence => true
class BusinessPhone
belongs_to :business_contact
validates :business_contact_id, :presence => true
これらのモデルではさらに多くのことが行われていますが、これが私がこだわっていることです。必要なすべての子を構築する business_entity のファクトリを作成するにはどうすればよいですか? したがって、仕様ファイルでは、FactoryGirl.create(:business_entity) だけを使用して、これを他のモデルのテストに使用できます。私はこの工場を持っています
require 'faker'
FactoryGirl.define do
factory :business_entity do
name "DaveHahnDev"
end
factory :business_location do
name "Main Office"
business_entity
address1 "139 fittons road west"
address2 "a different address"
city { Faker::Address.city }
province "Ontario"
country "Canada"
postal_code "L3V3V3"
end
factory :business_contact do
first_name { Faker::Name.first_name}
last_name { Faker::Name.last_name}
business_location
email { Faker::Internet.email}
end
factory :business_phone do
name { Faker::PhoneNumber.phone_number}
business_contact
number_type "Work"
end
end
これはこれを渡します
require 'spec_helper'
it "has a valid factory" do
FactoryGirl.build(:business_entity).should be_valid
end
では、このファクトリを使用して、他の仕様テストで使用するすべての子を持つ business_entity を作成するにはどうすればよいでしょうか。
これが十分に明確であることを願っています。