1

テストを実行する前に、「学生」、「インストラクター」、「管理者」の行が必要な役割モデルがあります。関連する学生ロールを持つユーザーを作成 (およびテストに合格) できますが、これは 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

ロールは期待どおりに作成されます...

factory.rb 内

    factory :account do
      user # associated user factory

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

テストで以下が呼び出されたときに、正しい学生ロール ID がアカウントの role_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>
4

1 に答える 1

1

かわった

 role_id { Role.find_by_name("student") } 

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

それだけかかりました...

于 2012-12-30T23:22:07.527 に答える