2012-12-30 50 views
1

我有一個角色模型,在任何測試運行之前需要'學生','教官','管理員'行。我可以爲具有關聯學生角色的用戶創建(並通過測試),但這隻會創建一個角色。但是,在我的應用程序中的方法和範圍失敗,因爲他們可能期望找到'管理員'的角色......那不是。工廠女孩種子數據

如何在測試運行之前在FactoryGirl中創建多個角色?

我想這...

在minitest_helper.rb

class MiniTest::Spec 
    include FactoryGirl::Syntax::Methods 
    before :each do 
    DatabaseCleaner.clean 
    Capybara.reset_sessions! 
    Capybara.use_default_driver 

    FactoryGirl.create(:role, name: "student") 
    FactoryGirl.create(:role, name: "admin") 
    FactoryGirl.create(:role, name: "instructor") 
    end 
    end 

按預期創建的角色...

在factories.rb

factory :account do 
     user # associated user factory 

     trait :student do 
     role_id { Role.find_by_name("student") } 
     end 
    end 

我如果以下內容爲ca,則會期望這將正確的學生角色ID分配給帳戶role_id字段在測試LLED ...

在user_test.rb

it "says Welcome Back" do 
    a = FactoryGirl.create :account, :student 
    assert page.has_content?('Welcome Back'), "does not contain Welcome Back" 
    end 

我得到的錯誤是:

undefined method `to_i' for #<Role:0x007fd5563cbdc8> 

回答

1

改變

role_id { Role.find_by_name("student") } 

role_id { Role.find_by_name("student").id } 

這就是所有...