Ruby on Rails:Cucumber:如何关闭数据库清理程序?

Nul*_*uli 3 ruby-on-rails

我正在测试的系统很复杂,编写分离的测试用例会浪费大量的时间和资源.所以,我需要我的测试来相互建立.

但是,例如,每当我在其中一个步骤定义中获得User.new时,一旦方案完成,用户将从数据库中删除.

我如何保留所有信息...除非我强制db:test:prepare?

这是我的env.rb:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')

require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/world'
require 'cucumber/rails/active_record'
require 'cucumber/web/tableish'
require 'cucumber/rails/rspec' 
require 'rake'



require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'
require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :transaction

@subscription_plan = Factory(:subscription_plan)
@subscription_plan.save!

Capybara.default_selector = :css
Capybara.default_wait_time = 2
Capybara.javascript_driver = :culerity
Capybara.current_driver = :culerity
Capybara.default_host = "cucumber.test.com" #for Rack::Test
Capybara.app_host = "cucumber.test.com" #if Capybara.current_driver == :culerity

Cucumber::Rails::World.use_transactional_fixtures = false
Run Code Online (Sandbox Code Playgroud)

Mar*_*ser 6

让你的测试相互建立是一个糟糕的想法,因为这意味着每个测试都不能自立,并使你的测试泄漏状态(这会产生大量错误的测试结果).如果您的测试无法从干净的平板开始,请使它们更具原子性.

就目前情况而言,根据您的描述判断,您并没有真正正确地测试您的系统.

  • 为了澄清这一点,让您的测试重用以前的步骤定义,而不是测试 (2认同)