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