gpt4 book ai didi

database - Rails 4 自动测试模式不工作

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:06 25 4
gpt4 key购买 nike

我有一个已升级到 Rails 4.1.8 的应用程序。我一直在尝试让 Rails ‘自动管理’我的测试模式……但是,无论如何……我必须手动准备测试数据库。我正在使用 MiniTest 和 Fixtures。

这是我的 test_helper.rb

  ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)

require "rails/test_help"
require "minitest/rails/capybara"
require 'minitest/rg'

Capybara.default_driver = :selenium

ActiveRecord::Migration.maintain_test_schema!

class ActionDispatch::IntegrationTest
# Make the Capybara DSL available in all integration tests
include Capybara::DSL
end

class ActiveSupport::TestCase
fixtures :all
include Sorcery::TestHelpers::Rails
include Sorcery::TestHelpers::Rails::Controller
extend MiniTest::Spec::DSL

# http://blowmage.com/2013/07/08/minitest-spec-rails4
register_spec_type self do |desc|
desc < ActiveRecord::Base if desc.is_a? Class
end

def sample_file(filename = "test_image.png")
File.new("#{Rails.root}/test/#{filename}")
end
end

重要的一行是“ActiveRecord::Migration.maintain_test_schema!”...它应该自动处理测试模式。然而,事实并非如此。我定期拉取我的生产数据库。之后......测试数据库将消失......因此需要重新创建它。

如果我运行:

bundle exec rake test

它会失败:

ActiveRecord::NoDatabaseError [...]

因此,测试数据库不是由 Rails 自动管理的。因为……它不在那里。

如果我运行 bundle exec rake db:create 它将失败,因为开发数据库已经存在。如果我运行 bundle exec rake db:migrate 它将执行但不会影响测试数据库。

如果我运行:

bundle exec rake db:test:prepare

它将打印:

WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test schema automatically, see the release notes for details.

测试:准备工作...我继续我快乐的测试方式。但是,很快... test:prepare 就会...噗...消失了。

问题

我错过了什么?当从生产中转储和拉入时……rails 怎么知道如何处理测试数据库?这在世界上很常见……如何处理?在下一个 Rails 版本中删除 test:prepare 时,在这种情况下会发生什么情况?

谢谢

最佳答案

rails db:test:prepare 被添加回 rails。我不确定是否有更多的方法来处理我上面概述的内容。我提交了一个问题来获得答案,回复只是说 db:test:prepare 被添加回来了。

https://github.com/rails/rails/issues/18045

关于database - Rails 4 自动测试模式不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27474589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com