为什么Avdi Grimm的database_cleaner示例现在不再适用于rails 4.2.4?

时间:2015-11-21 05:07:04

标签: rspec capybara rspec-rails database-cleaner

我不太确定究竟是什么问题,但是Avdi Grimm建议的database_cleaner使用示例现在似乎不再适用了,而不是database_cleaner README中显示的示例。两个示例都已将事务夹具设置为false。

以下是Avdi Grimm的例子来自his blog

RSpec.configure do |config|
  # added here for completeness
  config.use_transactional_fixtures = false 

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each, :js => true) do
    DatabaseCleaner.strategy = :truncation
  end

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

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

以下是database_cleaner README中显示的工作示例:

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do |example|
    DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
    DatabaseCleaner.start
  end

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

唯一不同的是截断策略设置。

1 个答案:

答案 0 :(得分:0)

IIRC第二个将对:js标记的任何非零/假值使用截断,如果:js标记=== true,第一个将仅使用截断。