Ruby on Rails: Cucumber: как отключить очиститель базы данных? - PullRequest
3 голосов
/ 15 июля 2010

Система, которую я тестирую, достаточно сложна, поэтому написание отдельных тестовых примеров будет огромной тратой времени и ресурсов.Итак, мне нужны мои тесты для построения друг друга.

Но, например, всякий раз, когда я получал 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

Ответы [ 6 ]

6 голосов
/ 13 апреля 2011

Создание ваших тестов, построенных друг на друге, - ужасная идея, потому что это означает, что каждый тест не может стоять сам по себе, и создает состояние утечки ваших тестов (что дает много ложных результатов тестирования). Если ваши тесты не могут начаться с чистого листа, сделайте их более атомарными.

В настоящее время дела обстоят не так, как следует из вашего описания.

2 голосов
/ 12 ноября 2013

Database Cleaner также включает в себя нулевую стратегию (которая вообще не выполняет очистку), которую можно использовать с любой библиотекой ORM.Вы также можете явно использовать его, задав для своей стратегии значение nil.

https://github.com/bmabey/database_cleaner по состоянию на 12 ноября 2013 г.

2 голосов
/ 31 августа 2012

Просто удалите

gem 'database_cleaner'

из вашего Gemfile.

И извлеките active_record файл, если возникло исключение NameError.

Это связано смолчаливой зависимости cucumber-rails gem от database_cleaner gem.

1 голос
/ 02 мая 2012

Попробуйте с @ no-database-cleaner в вашей функции

1 голос
/ 15 июля 2010

В функциях / support / env.rb должна быть строка:

Cucumber::Rails::World.use_transactional_fixtures = true

Установите значение false, и усечение базы данных должно прекратиться.

Редактировать: поскольку это не удалось, попробуйте добавить тег @ no-txn в файлы объектов, для которых требуется сохранение данных; Похоже, что это зарезервированный тег, используемый Cucumber для того, чтобы сценарии не были включены в транзакцию.

0 голосов
/ 11 июля 2019

Единственное, что сработало для меня, было

# features/support/env.rb
# ...
Cucumber::Rails::Database.autorun_database_cleaner = false

Это происходит от GitHub README .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...