2014-01-20 43 views
0

我spec_helper.rbRSpec的自動運行耙分貝:測試:準備

require 'simplecov' 
SimpleCov.start 'rails' 

# This file is copied to spec/ when you run 'rails generate rspec:install' 
ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara/rspec' 
require 'capybara/rails' 
require 'fakeweb' 
require 'rack_session_access/capybara' 
require 'sidekiq/testing' 
require 'rake' 

# Requires supporting ruby files with custom matchers and macros, etc, 
# in spec/support/ and its subdirectories. 
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 
    config.include Capybara::DSL 
    config.include Devise::TestHelpers, :type => :controller 

    # ## Mock Framework 
    # 
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: 
    # 
    # config.mock_with :mocha 
    # config.mock_with :flexmock 
    # config.mock_with :rr 

    # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 

    # If you're not using ActiveRecord, or you'd prefer not to run each of your 
    # examples within a transaction, remove the following line or assign false 
    # instead of true. 
    config.use_transactional_fixtures = false 

    config.before :suite do 
    DatabaseCleaner.strategy = :truncation 
    end 

    config.before :each do 
    DatabaseCleaner.clean 
    Rails.cache.clear 
    $redis.flushdb 
    Sidekiq::Worker.clear_all 

    if example.metadata[:sidekiq] == :fake 
     Sidekiq::Testing.fake! 
    elsif example.metadata[:sidekiq] == :inline 
     Sidekiq::Testing.inline! 
    elsif example.metadata[:type] == :acceptance 
     Sidekiq::Testing.inline! 
    else 
     Sidekiq::Testing.fake! 
    end 
    end 

    # If true, the base class of anonymous controllers will be inferred 
    # automatically. This will be the default behavior in future versions of 
    # rspec-rails. 
    config.infer_base_class_for_anonymous_controllers = false 

    # Run specs in random order to surface order dependencies. If you find an 
    # order dependency and want to debug it, you can fix the order by providing 
    # the seed, which is printed after each run. 
    #  --seed 1234 
    config.order = "random" 

end 

Capybara.default_driver = :selenium 
include Warden::Test::Helpers 
Warden.test_mode! 

問題:RSpec的自動運行耙分貝:測試:準備(或克隆),但麻煩的是,我已經保存在我的程序遷移比不能直接從schema.rb複製。那麼,有沒有辦法禁用它?

回答

1

如果您在遷移中使用存儲過程或其他數據庫特定功能,則應將config.active_record.schema_format設置更改爲:sqlas explained in this document。否則,設置數據庫乾淨副本的唯一方法是按順序運行所有遷移,這不是一種可持續的方法。一旦你解決了這個問題,你的測試運行應該工作得很好。