使用Rails,Rspec,Selenium和use_transactional_fixtures的数据库不一致

时间:2014-01-22 12:07:59

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

我遇到了一个问题:

  • Rails(3.2)
  • Rspec(2.14.1)
  • 数据库清理程序(1.2.0)

这就是我的Rspec配置:

RSpec.configure do |config|
  config.include Capybara::DSL

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

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

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

  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 = true

我会在我的before(:each)块中创建记录,但我不会在我的应用程序代码中看到它们。

这会导致问题,因为我期望在那里的对象没有。

经过多次尝试,我终于找到了问题的答案。

1 个答案:

答案 0 :(得分:0)

问题在于我正在使用

config.use_transactional_fixtures = true

将其更改为

config.use_transactional_fixtures = false

问题停止发生,我终于可以在应用程序代码中看到记录。