2013-10-27 2 views
1

Я тестирую новичку, используя minitest и с трудом начинаю. Мне интересно, почему каждый раз, когда я запускаю тесты, БД воссоздается. Я видел примеры видеороликов, где это, похоже, не так (such as this railscast on minitest). Неверна ли моя настройка? Должно ли это происходить каждый раз?Почему моя база данных создается каждый раз при запуске тестов?

Каждый раз, когда я бегу rake minitest:models я вижу ниже, прежде чем мои тесты запуска (укоротить, потому что это как 500 строк)

rake minitest:models 
Connecting to database specified by database.yml 
    (0.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" 
    (379.5ms) DROP DATABASE IF EXISTS "mf_test" 
    (239.8ms) CREATE DATABASE "mf_test" ENCODING = 'utf8' 
NOTICE: CREATE TABLE will create implicit sequence "admins_id_seq" for serial column "admins.id" 
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "admins_pkey" for table "admins" 
    (7.8ms) CREATE TABLE "admins" ("id" serial primary key, "email" character varying(255) DEFAULT '' NOT NULL, "encrypted_password" character varying(255) DEFAULT '' NOT NULL, "reset_password_token" character varying(255), "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying(255), "last_sign_in_ip" character varying(255), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
    (1.5ms) CREATE UNIQUE INDEX "index_admins_on_email" ON "admins" ("email") 

... 
... 
... 

Rack::File headers parameter replaces cache_control after Rack 1.5. 
Run options: 

# Running tests: 
... 

test_helper.rb

ENV["RAILS_ENV"] = "test" 
require File.expand_path("../../config/environment", __FILE__) 
require "rails/test_help" 
require 'minitest/rails' 
require 'minitest/focus' 

# To add Capybara feature tests add `gem "minitest-rails-capybara"` 
# to the test group in the Gemfile and uncomment the following: 
require "minitest/rails/capybara" 

# Uncomment for awesome colorful output 
require "minitest/pride" 

class ActiveSupport::TestCase 
    # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. 
    fixtures :all 

    # Add more helper methods to be used by all tests here... 
    def self.prepare 
    # Add code that needs to be executed before test suite start 
    end 
    prepare 

    def setup 
    # Add code that need to be executed before each test 
    end 

    def teardown 
    # Add code that need to be executed after each test 
    end 
end 

application.rb

require File.expand_path('../boot', __FILE__) 

require "active_record/railtie" 
require "action_controller/railtie" 
require 'rake/testtask' 
require "action_mailer/railtie" 
require "active_resource/railtie" 
require "sprockets/railtie" 
require "minitest/rails/railtie" 

if defined?(Bundler) 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
end 

module Martinfurniture 
    class Application < Rails::Application 
    # Configure the default encoding used in templates for Ruby 1.9. 
    config.encoding = "utf-8" 

    # Configure sensitive parameters which will be filtered from the log file. 
    config.filter_parameters += [:password] 

    # Enable escaping HTML in JSON. 
    config.active_support.escape_html_entities_in_json = true 

    # Allows for sub-directories in Models 
    config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')] 

    config.active_record.whitelist_attributes = true 

    config.autoload_paths += %W(#{config.root}/app/models/ckeditor) 

    config.sass.debug_info = true 

    config.exceptions_app = self.routes 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets 
    config.assets.version = '1.0' 

    # Devise 
    config.assets.initialize_on_precompile = false 

    # Testing 
    config.generators do |g| 
     g.test_framework :mini_test 
     g.helper false 
     g.assets false 
     g.view_specs false 
    end 
    end 
end 
+1

В соответствии с принципом TDD '' 'repeatable''' тестовая база данных должна быть очищена каждый раз при выполнении тестов. Таким образом, поведение базы данных кажется ожидаемым. – freemanoid

+1

Спасибо, есть способ заставить его не печатать создание БД (он создает много визуального беспорядка)? –

ответ

0

Вы можете отключить печать всех запросов sql с помощью ActiveRecord::Base.logger = nil

+0

ooops, это должно было быть в ответ на: > Спасибо, есть способ заставить его не печатать создание БД (это создает много визуального беспорядка)? - приветствие 6 часов назад – fremn

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