我有一个Roles模型,在运行任何测试之前需要'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
角色按预期创建......
factory :account do
user # associated user factory
trait :student do
role_id { Role.find_by_name("student") }
end
end
我希望在测试中调用以下内容时,可以将正确的学生角色ID分配给accounts role_id字段...
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>
答案 0 :(得分:1)
已更改
role_id { Role.find_by_name("student") }
到
role_id { Role.find_by_name("student").id }
这就是花了所有......