Rails集成测试不会重新开始

时间:2017-05-18 00:30:27

标签: ruby-on-rails-4 capybara integration-testing puma

我在Rails 4上运行多个集成测试时遇到困难(现在称为Rails 5中的系统测试)。

环境:在Puma服务器上运行Rails 4 / Minitest / Capybara / Poltergeist。

  1. 当我运行一个创建新记录的测试时,每次都有效

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb -n /create_new/
    
  2. 当我运行整套测试时,上面的测试每次都无法创建,因为该记录已经存在。

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb
    
  3. 我通过在开始时添加puts Request.all.collect(&:name)来确认这一点 - 在运行组时,已经在数据库中创建了记录。

    这是核心问题 - 每次测试数据库都不可靠新鲜。 (对于我的单元测试和我的功能测试,在小组和个人中都是新鲜的。)我怎样才能确保我的集成测试每次都重新开始?

    如果它有用,上面的命令似乎是在开发模式下运行Puma,即使我已经在ENV['RAILS_ENV'] = 'test'中指定了test_helper.rb

1 个答案:

答案 0 :(得分:0)

您是否检查过database_cleaner gem(https://github.com/DatabaseCleaner/database_cleaner)?每次在RailsHelper配置中运行新的集成测试时,都可以使用它来清除数据库。我查看了他们的文档,但我看起来像:

DatabaseCleaner.strategy = :truncation

RSpec.configure do |config|
 config.before(:each) do
  DatabaseCleaner.clean
 end

 config.after(:each) do
  FactoryGirl.reload #if you're using FactoryGirl
 end
end