fut*_*eal 9 testing unit-testing ruby-on-rails
我们在Rails下有一个大型的多开发人员项目,我们正在使用模型和控制器的测试.现在,开发人员必须在运行测试之前切换"测试"环境的数据库参数以匹配其本地开发环境.我想知道是否有办法在"测试"以外的任何环境中运行这些测试?
例如我们在database.yml中:
test:
database: ...
host: ...
username: ...
password: ...
...
dev-one:
...
dev-two:
...
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到任何关于此的内容,但也许我在找错了地方.有任何想法吗?
谢谢!
只需在要运行测试时显式指定环境即可。您只需要事先做好一些准备。
假设您的新环境将被命名为“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
Run Code Online (Sandbox Code Playgroud)
3- 按如下方式运行测试:
RAILS_ENV="testjohn" rake db:migrate
RAILS_ENV="testjohn" rake test:units
Run Code Online (Sandbox Code Playgroud)
顺便说一句,由于 RAILS_ENV 只是一个环境变量,因此您可能有一个预先设置它的脚本,甚至让每个开发人员在他的.profile或其他文件中配置自己的 RAILS_ENV 变量。这样他们只需运行rake 测试:单元和测试会在他们的个性化环境下自动执行。