2014-12-14 3 views
2

У меня есть приложение, которое было обновлено до рельсов 4.1.8. Я взломал попытку сделать рельсы «автоматически управляемыми» моей схемой тестирования ... но, несмотря ни на что ... Я должен вручную подготовить тестовую базу данных. Я использую MiniTest и Fixtures.Неисправна схема автоматического тестирования Rails 4

Вот мой 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!" ... который должен автоматически обрабатывать тестовую схему. Однако это не так. Я регулярно занимаюсь производственной базой данных. После чего ... тест db исчезнет ... поэтому его нужно воссоздать.

Если я бегу:

bundle exec rake test 

Он потерпит неудачу с:

ActiveRecord::NoDatabaseError [...] 

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

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

Если я бегу:

расслоение EXEC грабли БД: Тест: подготовка

Это будет печатать:

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

тест: подготовка работ ... Я иду на мой веселый путь тестирования , Но, скоро ... тест: подготовить будет ... пуф ... ушел.

вопросы

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

Благодаря

ответ

2

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

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

Смежные вопросы