繁体   English   中英

在> = Rails 3.2.0中创建“测试”数据库内容的最佳方法是什么?

[英]What's the best method for creating “test” database content in >= Rails 3.2.0?

我希望能够创建几十个用户,文章(或该应用程序独有的任何资源)等,以查看该应用程序的外观以及填充后的响应方式。 这只是出于测试/开发目的,因此我希望能够轻松地将其回滚,销毁或进行其他操作。 谁知道呢,也许我想得太多了。

我见过有人建议仅使用标准迁移,这是一个主意,但我想这样做是可选的,我不希望项目中的每个人都在更新应用程序时获得示例内容。

其他人提到过“工厂女郎”,但看起来它要么是矫kill过正,要么是真正为测试目的而设计的宝石的侧面使用等。目前还不是很清楚。

那么你们在这种情况下会做什么?

我推荐一个耙任务。 您可以将其粘贴在lib/tasks ,以便项目中的每个人都可以使用它,但并不是每个人都需要运行它,只有在运行时它才能执行任何操作。 这是一篇有关编写rake任务的出色教程 ,只记得记住阅读Rails标题下的部分,以了解如何引入模型。

在那之后,您的瑞克任务基本上只是红宝石代码。 我建议使用动态find_or_create_by方法来显式创建所需的模型,并且如果该模型多次运行,则不会多次创建它们。 您还可以选择在创建特定模型之前销毁所有记录。

我不建议使用Factory Girl,因为您可能希望显式控制模型的创建方式。

这是一个示例性的rake任务,展示了它的简单程度:

#lib/tasks/my_task.rake
task :fake_data => :environment do
    MyModel.find_or_create_by_name("Test")
end

然后在您的控制台中:

rake fake_data

要么:

rake fake_data RAILS_ENV=test

da!

看一下Rails种子数据功能

http://railscasts.com/episodes/179-seed-data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM