2

I set up cucumber/rails for my rails project and populated the test database with data, to run tests against it. When I run "rake cucumber" the database gets truncated. I tried to set DatabaseCleaner.strategy to :transaction and nil, but it still gets truncated. I'd prefer not to use database_cleaner at all for now, but its presence is required by cucumber. Here is my "./features/support/env.rb" file:

require 'cucumber/rails'
require 'capybara/cucumber'

Capybara.default_driver = :selenium

ActionController::Base.allow_rescue = false


begin
  DatabaseCleaner.strategy = nil
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end


Cucumber::Rails::Database.javascript_strategy = :truncation

Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
4

3 回答 3

3

我不相信有什么策略什么都不做,但黄瓜不需要它来运行。可能您可能必须将其从您的 env.rb 文件和您的 hooks 文件中的任何数据库清理中删除。

编辑:

我错了,有一个空策略。尝试:

DatabaseCleaner.strategy = DatabaseCleaner::NullStrategy

或者

DatabaseCleaner::Base.new

于 2015-02-16T12:20:06.573 回答
1

您需要同时设置DatabaseCleaner.strategyCucumber::Rails::Database.javascript_strategy

Cucumber-rails 没有空策略,所以你必须制定一个。这对我有用,在env.rb

DatabaseCleaner.strategy = DatabaseCleaner::NullStrategy

class NullStrategy < Cucumber::Rails::Database::Strategy
  def before_js
    super DatabaseCleaner::NullStrategy
  end
end

Cucumber::Rails::Database.javascript_strategy = NullStrategy
于 2015-11-04T08:55:55.420 回答
0

我相信这是最简单且记录在案的方法。

Cucumber::Rails::Database.autorun_database_cleaner = false
于 2021-09-23T11:15:56.943 回答