- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想编写一个特定的测试来检查回归。我继承了一个没有单元测试的 Rails 环境,并且几乎没有防范通过外部(Rails 之外)方式将内容放入数据库的措施。
单元测试将遍历数据库中的特定模型并呈现 View ,确保每个实例仍然可以在该 View 中正确呈现。我想针对通常是生产数据库 (mysql) 的克隆的开发数据库实例运行它。
数据太大,无法放入 fixtures...我想使用“test”sqlite 数据库保留其余测试。
那么 - 有没有办法覆盖 Rails 连接到数据库的单个测试?
我正在使用 Rails 3.2.22。
编辑:
基于 Babar's answer ,我正在使用:
class MyTest < ActionController::TestCase
def setup
@controller = MyController.new
end
test "should successfully render all" do
begin
connection_config = ActiveRecord::Base.connection_config()
ActiveRecord::Base.establish_connection('development')
MyModel.find_each do |i|
print "#{i.id} - #{i.name}\n"
get(:show, {'name' => i.name})
end
ensure
ActiveRecord::Base.establish_connection(connection_config)
# or ActiveRecord::Base.establish_connection(ENV['RAILS_ENV'])
end
end
end
但我在尝试回滚时遇到异常。我假设这是因为测试最初是围绕事务进行的,并且由于我交换了数据库,连接现在已关闭,我们不再真正处于事务中。
最直接的解决方法是什么?
编辑:
添加这个看起来是最直接的:
def setup
@controller = DashboardController.new
@use_transactional_fixtures = false
end
最佳答案
有一个名为establish_connection
的类方法可以做你想做的事。只需在使用 ActiveRecord::Base.establish_connection
运行该特定测试时连接到不同的数据库。
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "localhost",
:username => "myuser",
:password => "mypass",
:database => "somedatabase"
)
您可以使用 database.yml
文件中的数据库别名。它会是这样的:
ActiveRecord::Base.establish_connection('development')
您可以将其直接编码到您的特定测试文件中。
查看文档:http://apidock.com/rails/v3.2.1/ActiveRecord/Base/establish_connection/class
关于ruby-on-rails - 使用特定的 RAILS_ENV 进行单个单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639020/
我正在看这篇关于 rake 命令的文章,但不知道 RAILS_ENV 在哪里。那是在某个特定文件中吗? db:create Creates the database for the current R
我正在尝试将我的 rails 应用程序部署到我的生产服务器。但是我的应用程序不会使用我的任何生产配置。 我手动设置 RAILS_ENV 使用: 导出 RAILS_ENV=生产 然后,当我运行 echo
我将批处理文件放在 lib 文件夹中并使用 rails db 配置,像这样的事件记录。 require "#{File.dirname(__FILE__)}/../config/environment
我正在本地主机上的 rails5 中配置一个新应用程序,但在建立我的环境时遇到了一些问题。我将我的环境变量设置为“开发”,但每当我运行 rake db:drop 时,它都会显示以下内容 ActiveR
我想编写一个特定的测试来检查回归。我继承了一个没有单元测试的 Rails 环境,并且几乎没有防范通过外部(Rails 之外)方式将内容放入数据库的措施。 单元测试将遍历数据库中的特定模型并呈现 Vie
我运行我的任务 crate db:restore 并显示错误: ** Execute db:restore rake aborted! NameError: uninitialized constan
我试着跑 ruby script/server RAILS_ENV=production 但不知何故它总是尝试读取“开发”配置.. RAKE XXX RAILS_ENV=production(尝试读取
在 deploy.rb ,相信:rails_env通常由 require 'capistrano/rails' 设置在您的 Capfile 中找到.我正在使用 rails,但没有使用内置 Assets
在检查正在运行的环境时,我在示例中看到了这两种情况。首选什么?无论出于何种意图和目的,它们都是平等的吗? 最佳答案 According to the docs , #Rails.env 包装 RAIL
在 Linux 和 OS X 上,我习惯于通过这样做在指定的 Rails“环境”中运行 Rake 任务: $ export RAILS_ENV=monster_island ; rake monste
我有这个小佣金任务: namespace :db do namespace :test do task :reset do ENV['RAILS_ENV'] = "test"
每次我将新版本推送到我的暂存 heroku 应用程序时,RACK_ENV 和 RAILS_ENV 变量都会更改为“生产”,而不是“暂存”,这是我手动分配的值。这开始发生在几个小时前。 每次部署时,在
我正在开发具有多个 RAILS_Env 的 Rails 应用程序 env_name1: adapter: mysql username: root password: host:
我想在 bash 中的完成列表中添加一些环境变量名称和可能的值。 例如,在 Ruby on Rails 中,我运行如下命令RAILS_ENV=test bundle exec rails db:mig
您如何根据当前的 RAILS_ENV 进行 Rails 迁移? 具体来说,我想: 检查向主管主管的迁移 仅在我们的 Staging 实例上执行迁移 这样做将允许我们执行数据库更新 - 通过迁移 - 我
我已经读过这个问题:Rails.env vs RAILS_ENV 我添加了 rails-dev-boost 插件( http://github.com/thedarkone/rails-dev-boo
作为奖励,我如何在配置中设置它,以便当我登录到我的生产服务器时,我不必重新输入它。 最佳答案 我也倾向于用每个命令认真地设置它。 虽然我没有直接在服务器上做很多事情,但我通常使用 capistrano
我已将我的应用程序部署到 Heroku 并 fork 环境以创建“暂存”环境。我复制了我的 paroduction.rb 文件来创建一个 staging.rb,但是当我将 RAILS_ENV 和 RA
我的 Capistrano 部署在运行 bundle 命令时没有设置 RAILS_ENV 变量。我不明白为什么。 我的 Gemfile 是: source 'https://rubygems.org'
在 Linux 中,您可以使用命令 echo $PATH 找到 $PATH 环境变量的值。在 Rails 中,RAILS_ENV(以及类似的 RACK_ENV)是一个具有诸如“development”
我是一名优秀的程序员,十分优秀!