私はこれらのモデルを持っています:
class User < ActiveRecord::Base
has_many :company_users, :dependent => :delete_all
class Company < ActiveRecord::Base
has_many :company_users, :dependent => :delete_all
has_many :users, :through => :company_users
class CompanyUser < ActiveRecord::Base
belongs_to :company
belongs_to :user
このヘルパー関数を使用して、次の作成とログインを行います。
def create_company_admin
company_user = FactoryGirl.create(:company_user, :has_shopper, :has_company, :admin)
user = User.first
login_as user, scope: :user
company_user
end
そして、これが実際のテストです
feature 'user listing' do
background do
company_user = create_company_admin
end
scenario 'getting user list' do
visit '/companies'
page.has_content? company_user.user.name
end
end
これは、彼が呼び出す場所まで機能します: company_user.user.name は存在しないようです。そこで、未定義のローカル変数またはメソッド「company_user」を取得します
これは工場です:
factory :company_user, class: CompanyUser do
authorized true
trait :admin do
admin true
end
trait :not_admin do
admin false
end
trait :has_shopper do
association :user, factory: :shopper
end
trait :has_company do
association :company, factory: :company
end
end
編集:
ここはショッパー(一種のユーザー)のファクトリー
factory :shopper, class: User do
username "user"
email "mail@mai.co"
password "password1"
after(:create) do |u|
u.skip_confirmation!
u.save!
end
end
テストでユーザー、会社、および company_user を取得するにはどうすればよいですか?