2012-12-30 2 views
1

테스트를 실행하기 전에 'student', 'instructor', 'admin'행이 필요한 역할 모델이 있습니다. 연결된 학생 역할을 가진 사용자를 만들 수 있고 테스트를 통과 할 수는 있지만 하나의 역할 만 생성합니다. 하지만, 내 앱의 메소드와 스코프가 실패하는 이유는 '관리자'역할을 기대할 수 있기 때문입니다.공장 소녀 씨앗 데이터

테스트를 실행하기 전에 FactoryGirl에서 여러 역할을 어떻게 작성합니까?

나는이 시도

... 예상대로 역할이 만들어
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 

minitest_helper.rb에서

... factories.rb에서

factory :account do 
     user # associated user factory 

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

I 다음이 ca 일 때 account role_id 필드에 올바른 학생 역할 ID를 할당 할 것으로 기대합니다. 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").id } 
,691에

role_id { Role.find_by_name("student") } 

변경

그게 전부 였어 ...

관련 문제