如何使用rake db:seed将种子数据添加到测试数据库?

17

我正在使用Factory Girl来填充我的种子数据,并将其添加到seed.rb中。

然后,我使用Cucumber运行我的测试。

我有一张价格表,其中包含我想在所有环境中使用的种子数据。

我希望rake db:seed将其添加到我的dev和test数据库中,并使cucumber能够使用该测试种子。然后,我还会在生产环境中添加该种子数据。

如何确保我的种子数据被添加到开发和测试数据库中?

rake db:seed #only adds it only to my dev database
3个回答

38

你可以尝试类似于这样的方法:

rake db:seed RAILS_ENV=test --trace
rake db:seed RAILS_ENV=production --trace

这会仅更改该rake任务的环境吗?之后我需要重置它吗? - Jamis Charles
并不是,你只是告诉rake根据你的database.yml配置文件使用参数。无论如何,在学习时详细说明命令总是一个好主意。你可以运行你的Rails应用程序:scrip/server RAILS_ENV=development - Christian

9

请查看这篇回答,它与您的问题类似。

我认为最好使用工厂来填充测试数据库。如果您需要在测试期间添加种子数据,请将其添加为spec_helper/test_helper中的before :all块。


这个答案更适合多个开发人员拉取你的更改并在他们的机器上运行测试。使用这个答案,你不必告诉他们阅读文档,而是指导他们每次运行以下命令:'rake db:seed RAILS_ENV=test --trace'。 - Dominic
这与问题有什么关系? - Andrew Koster

1

在处理测试数据库时,您可能需要访问此主题,特别是因为您不希望将数据保留在测试数据库中。随着测试的发展,您很可能会发现自己使用种子数据、工厂以及模拟,并且使用持久数据时会遇到冲突。

个人而言,我喜欢为我的测试数据库使用自定义种子文件,并在rails_helper中加载它:

DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean

load "#{Rails.root}/db/custom_test_seed.rb"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接