【问题标题】:Database not cleaning when testing Controllers with RSpec使用 RSpec 测试控制器时数据库未清理
【发布时间】:2014-08-23 19:12:57
【问题描述】:

在使用 RSpec 测试我的模型时,我使用以下代码来清理我的数据库:

config.before(:suite) do
  begin
    DatabaseCleaner.start
  ensure
    DatabaseCleaner.clean
  end
end

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

我的所有模型测试都通过了,但是当我测试我的控制器时,它们似乎使用了与我的模型操作相同的数据集,从而导致我的测试出错。

我可以改用以下代码让我的控制器测试通过:

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

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

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

但是,这会导致我的模型测试失败。关于如何在不破坏一组测试或另一组测试的情况下组合这些块的任何建议?

【问题讨论】:

    标签: ruby-on-rails rspec database-cleaner


    【解决方案1】:

    您没有提及任何特定版本的 database_cleaner,也没有提及您的数据库。但是 RSpec 中 database_cleaner 的最新配置使用了一个环绕过滤器

    https://github.com/DatabaseCleaner/database_cleaner#rspec-example

    【讨论】:

    • 抱歉,我使用的是最新版本。太完美了!
    • 太棒了! database_cleaner 的配置每隔一段时间就会更改一次。
    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多