Схема автоматического тестирования Rails 4 не работает

У меня есть приложение, которое было обновлено до версии 4.1.8. Я пытался сделать так, чтобы рельсы «автоматически управляли» моей тестовой схемой... но, несмотря ни на что... я должен вручную подготовить тестовую базу данных. Я использую 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 [...]

Таким образом, тестовая БД не управлялась рельсами автоматически. Потому что... его нет.

Если я запущу команду bundle exec rake db:create, произойдет сбой, потому что база данных разработки уже существует. Если я запускаю пакет exec rake db:migrate, он будет выполняться, но не повлияет на тестовую базу данных.

Если я бегу:

пакет 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 works... Продолжаю свой веселый путь тестирования. Но скоро ... test:prepare будет ... пуф ... пропало.

вопросы

Что мне не хватает? При сбросе и извлечении из производства ... как рельсы узнают, как обращаться с тестовой базой данных? Это обычное явление в мире... как с этим справиться? Что происходит в таких случаях, когда test:prepare удаляется в следующем выпуске рельсов?

Спасибо


person hellion    schedule 14.12.2014    source источник


Ответы (1)


rails db:test:prepare снова добавлен в rails. Я не уверен, есть ли более рельсовый способ приблизиться к тому, что я изложил выше. Я отправил вопрос, чтобы получить ответы на этот вопрос, и в ответе просто говорилось, что db:test:prepare был добавлен обратно.

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

person hellion    schedule 16.12.2014