在测试环境中启动轨道 [英] starting rails in test environment

查看:38
本文介绍了在测试环境中启动轨道的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆