无需数据库交互即可加速测试

时间:2012-08-16 18:01:12

标签: ruby-on-rails rspec

我已经为我的项目添加了一些:js => true测试,并且必须集成database_cleaner gem才能使其正常工作。现在我的测试,即使是那些不使用数据库的测试也会大大减慢。有没有办法跳过基于模拟/非基于数据库的测试的数据库访问?

spec_helper.rb

的相关部分
    config.before(:suite) do
      DatabaseCleaner.strategy = :truncation
    end

    config.before(:each) do
      DatabaseCleaner.start
    end

    config.after(:each) do
      DatabaseCleaner.clean
    end

1 个答案:

答案 0 :(得分:0)

只有在需要

时才能使用DatabaseCleaner

spec_helper.rb

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

config.before(:each) do
  if :without_db != example.metadata[:type]
    DatabaseCleaner.start
  end
end

config.after(:each) do
  if :without_db != example.metadata[:type]
    DatabaseCleaner.clean
  end
end

user_spec.rb

describe User, :type => :without_db do
  it 'should be valid' do
    should be_valid
  end
end