如何为FactoryGirl构建创建user_id?

时间:2016-12-14 18:37:57

标签: ruby-on-rails rspec factory-bot rspec-rails

我是FactoryGirl,Faker的新手,还有更广泛的测试。

我相信我需要为我的用户添加一个由FactoryGirl创建的ID,以评估用户是否可以访问某些页面和/或拥有某些嵌套资源的所有权。我对此提出质疑,因为在我研究(Google并检查StackOverflow)时,我没有看到很多关于为FactoryGirl创建资源生成ID的信息。由于我的用户ID为nil,我认为FactoryGirl默认是在不添加ID的情况下构建资源。

我确实看到了有关创建关联的信息,但即便是那些似乎也没有ID。在应用程序中,我创建了对用户资源的所有访问权限,并根据用户的ID进行检查。

我应该为FactoryGirl生成的用户创建身份证吗? 如果没有,为什么不呢?我该怎么做呢? 如果是这样,我如何生成不同的用户ID以相互检查?

提前感谢您的意见。

1 个答案:

答案 0 :(得分:2)

如果要保留用户对象,则应自动分配/增加ID。您可以使用build来实例化对象,而不是create

user = build(:user)< - 对象已创建,未保存,无ID

user = create(:user)< ---对象已创建并保存,具有ID

要获得最佳实践,请确保您的测试在单独的数据库中运行,以免污染您的实时数据。您还可以查看https://github.com/DatabaseCleaner/database_cleaner,以便在测试运行后轻松清理测试数据。