在测试环境中启动轨道 [英] starting rails in test environment
问题描述
我正在尝试使用ruby脚本在测试环境中加载Rails.我尝试了一下Google搜索,发现了以下建议:
I'm trying to load up rails in the test environment using a ruby script. I've tried googling a bit and found this recommendation:
require "../../config/environment"
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test'
这似乎可以正常加载我的环境,但是我的开发数据库仍在使用中.我在做错什么吗?
This seems to load up my environment alright, but my development database is still being used. Am I doing something wrong?
这是我的database.yml文件...但是我不认为这是问题
Here is my database.yml file... however I don't think it is the issue
development:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_development
pool: 5
username: root
password: dev
host: localhost
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_test
pool: 5
username: root
password: dev
host: localhost
production:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_production
pool: 5
username: root
password: dev
host: localhost
我不能使用
ruby script/server -e test
因为在加载Rails之后我试图运行ruby代码.更具体地说,我想做的是:运行.sql数据库脚本,加载rails,然后运行自动化测试.一切似乎都运行良好,但是无论出于何种原因,rails似乎都在开发环境而不是测试环境中加载.
because I'm trying to run ruby code after I load rails. More specifically what I'm trying to do is: run a .sql database script, load up rails and then run automated tests. Everything seems to be working fine, but for whatever reason rails seems to be loading in the development environment instead of the test environment.
这是我要运行的代码的简化版本:
Here is a shortened version of the code I am trying to run:
system "execute mysql script here"
require "../../config/environment"
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test'
describe Blog do
it "should be initialized successfully" do
blog = Blog.new
end
end
我不需要启动服务器,只需要加载我的rails代码库(模型,控制器等),就可以对我的代码运行测试.
I don't need to start a server, I just need to load my rails code base (models, controllers, etc..) so I can run tests against my code.
感谢您的帮助.
更新:
我现在正在加载Rails环境.现在,我正在尝试在rake任务中运行测试文件.这是我的代码:
I have my rails environment now loading. Now I'm trying to run my test files within my rake task. Here is my code:
require"spec"
require "spec/rake/spectask"
RAILS_ENV = 'test'
namespace :run_all_tests do
desc "Run all of your tests"
puts "Reseting test database..."
system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\BrianSite_test_CreateScript.sql"
puts "Filling database tables with test data..."
system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\Fill_Test_Tables.sql"
puts "Starting rails test environment..."
task :run => :environment do
puts "RAILS_ENV is #{RAILS_ENV}"
require "spec/models/blog_spec.rb"
end
end
我认为require"spec/models/blog_spec.rb"文件可以完成此操作,但是它似乎无法运行测试...
I thought the require "spec/models/blog_spec.rb" file would do it, but it doesn't seem to run the tests...
谢谢您的帮助.
推荐答案
您知道您可以从Rake运行单元,功能和集成测试,对吗?查看rake -T test
的输出以了解操作方法.
You know you can run your unit, functional and integration tests from Rake, right ? Check out the output of rake -T test
to see how.
如果您需要更多自定义内容,则可以创建自己的Rake任务.将类似的内容放在lib/tasks
中的文件中:
In case you need something more custom, you can create your own Rake task. Put something like this in a file in lib/tasks
:
namespace :custom_tests do
desc "Run my custom tests"
task :run => :environment do
puts "RAILS_ENV is #{RAILS_ENV}"
system "execute mysql script here"
# Do whatever you need to do
end
end
=> :environment
为您加载当前环境.然后,您可以像这样在测试环境中运行任务:RAILS_ENV=test rake custom_tests:run
The => :environment
loads the current environment for you. Then, you can run your task in the test environment like this: RAILS_ENV=test rake custom_tests:run
这篇关于在测试环境中启动轨道的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!