Rails单元测试可以在不同于测试的环境下运行吗?

时间:2010-05-18 21:31:44

标签: ruby-on-rails unit-testing testing

我们在Rails下有一个大型多开发人员项目,我们正在使用模型和控制器的测试。现在,开发人员必须在运行测试之前切换“测试”环境的数据库参数以匹配其本地开发环境。我想知道是否有办法在'test'以外的任何环境中运行这些测试?

例如我们在database.yml:

test:
  database: ...
  host: ...
  username: ...
  password: ...
...
dev-one:
  ...
dev-two:
  ...

我在文档中找不到任何内容,但也许我在找错了地方。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

截至目前,这仍然不起作用。我提交了一个问题:https://github.com/rails/rails/issues/21478

我将使用更新编辑此答案

答案 1 :(得分:0)

只是在您要运行测试时明确指定环境。你事先需要准备几个。

假设您的新环境将被命名为“testjohn”(大概是名为John的开发人员)。然后:

1-将 config / environments / test.rb 复制到 config / environments / testjohn.rb

2-将相应的DB节添加到 config / database.yml (从测试节复制它,重命名,然后可能更改数据库名称,密码和其他数据)。 我(相当简单)的例子使用了这个:

testjohn:
  adapter: sqlite3
  database: db/testjohn.sqlite3
  pool: 5
  timeout: 5000

3-按如下方式运行测试:

RAILS_ENV="testjohn" rake db:migrate
RAILS_ENV="testjohn" rake test:units

顺便说一下,由于RAILS_ENV只是一个环境变量,您可能有一个预先设置它的脚本,甚至让每个开发人员在他的 .profile 或任何文件中配置自己的RAILS_ENV变量。这样他们就可以运行 rake test:units 并在他们的个性化环境下自动执行测试。