我正在测试的系统很复杂,编写分离的测试用例会浪费大量的时间和资源.所以,我需要我的测试来相互建立.
但是,例如,每当我在其中一个步骤定义中获得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)
让你的测试相互建立是一个糟糕的想法,因为这意味着每个测试都不能自立,并使你的测试泄漏状态(这会产生大量错误的测试结果).如果您的测试无法从干净的平板开始,请使它们更具原子性.
就目前情况而言,根据您的描述判断,您并没有真正正确地测试您的系统.