2017-05-24 84 views
0

我是新來的測試Rails的,我很難測試我的關聯。我想簡單地爲具有各種角色的確認用戶提供工廠,我可以在我的規格中創建這些工廠。我想只是有能力user = create(:user_superadmin)user = create(:user_accountadmin),但我很難這樣做。來自繼承工廠的FactoryGirl協會

下面是運行我的規格時,我遇到了錯誤:

Failure/Error: user = create(:user_superadmin) 

    NoMethodError: 
     undefined method `name' for :user_superadmin:Symbol 

請參閱下面我的代碼:

工廠/ role.rb

FactoryGirl.define do 
    factory :role_superadmin, class: Role do 
    name 'SuperAdmin' 
    description 'Lorem ipsum...' 
    end 
end 

工廠/user.rb

FactoryGirl.define do 
    factory :user do 
    email { Faker::Internet.email } 
    password { Faker::Internet.password(8) } 
    password_confirmation { password } 

    factory :confirmed_user do 
     confirmed_at Time.zone.now 

     factory :user_superadmin do 
     association :role, factory: role_superadmin 
     end 
    end 
    end 
end 

規範

it 'should be a superadmin user' do 
    user = create(:user_superadmin) 
    expect(user.super_admin?).to be_truthy 
end 

任何幫助深表感謝。

回答

1

在你的定義:user_superadmin,試試這個協會:

association :role, factory: :role_superadmin

注意:role_superadmin必須是一個符號,以及因此FactoryGirl可以找到合適的工廠。

+0

omg ... thx這麼多。 –

+1

沒問題。當我開始使用FactoryGirl時,我發現Arjan van der Gaag提供的這套技巧很有用:http://arjanvandergaag.nl/blog/factory_factor_girl_tips.html –