Ruby on rails 使用Factory Girl进行测试时处理数据库的正确方法
我正在尝试将一个使用Fixture的Rails 3应用程序转移到Factory Girl,但不完全确定数据库的正确方法。(注意,我使用Rspec进行测试) 我有一个Ruby on rails 使用Factory Girl进行测试时处理数据库的正确方法,ruby-on-rails,ruby-on-rails-3,testing,factory-bot,fixtures,Ruby On Rails,Ruby On Rails 3,Testing,Factory Bot,Fixtures,我正在尝试将一个使用Fixture的Rails 3应用程序转移到Factory Girl,但不完全确定数据库的正确方法。(注意,我使用Rspec进行测试) 我有一个seeds.db,其中包含功能和集成测试所需的数据,但是当涉及到我的角色模型的模型测试时,如果我想从工厂创建一个管理员角色,这个种子数据可能会遇到阻碍,但是我的seed在数据库中已经有一个管理员角色,名称列必须是唯一的。此外,我在这些模型测试中创建的任何数据都可能会干扰我的集成测试,因为我会有我不期望的额外数据 我想有几个问题: 在我
seeds.db
,其中包含功能和集成测试所需的数据,但是当涉及到我的角色
模型的模型测试时,如果我想从工厂创建一个管理员角色,这个种子数据可能会遇到阻碍,但是我的seed在数据库中已经有一个管理员角色,名称列必须是唯一的。此外,我在这些模型测试中创建的任何数据都可能会干扰我的集成测试,因为我会有我不期望的额外数据
我想有几个问题:
,在(:all)
之前有,因此您可以在运行测试之前设置数据。所以这并不是很多额外的工作
但一开始可能会让您感到困惑的是,当使用before(:all)
时,rspec不会在测试运行之间清除数据库,因为我通常只是在after(:all)
块中手动删除数据库。因此,我使用的经验法则是:在(:all)
之前的中创建的任何内容都应该在(:all)
之后的中删除
很多人也使用gem,但到目前为止我还不需要它。谢谢你的回答!我会尽量只去工厂,但我的项目负责人暗示我们需要种子,尽管他没有具体说明原因,所以希望我能解决这个问题。