Я использую Ruby on Rails 3.2.2, cucumber-rails-1.3.0, rspec-rails-2.8.1 и capybara-1.1.2.Я хотел бы использовать Selenium для тестирования скриптов Java, но без удаления данных базы данных test
каждый раз, когда я запускаю командную строку cucumber
в моем окне терминала.То есть, если я укажу функцию, подобную следующей:
Feature: ...
@javascript
Scenario: ...
JavaScript проверен, как и ожидалось.Однако после выполнения теста данные базы данных test
удаляются, и я должен снова заполнить эту базу данных, чтобы правильно запустить новые тесты.
Я прочитал Официальную документацию итекст, присутствующий в файле ROOT_APP/features/support/env.rb
(кажется, что я установил все необходимые гемы Ruby - см. ниже для получения дополнительной информации о Gemfile, который я использую), но я не понимал, как избежать удаления данных базы данных и как настроитьДрагоценные камни огурца и капибары для правильной работы с селеномпотому что Я хотел бы иметь те же самые данные базы данных test
, когда я "тестирую" / "запускаю" сценарии .
Примечание II : для заполнения данныхв базу данных test
(моему приложению нужны эти данные для работы), я добавляю следующий код в файл RAILS_ROOT_PATH/lib/tasks/cucumber.rake
и запускаю командную строку rake db:test:prepare
из окна терминала.
namespace :db do
namespace :test do
task :prepare => :environment do
Rake::Task["db:seed"].invoke
end
end
end
В файле ROOT_APP/features/support/env.rb
я пытался отвлечьсяОдин и оба следующих блока кода ( BTW : я никогда не менял исходный файл, автоматически сгенерированный гемом cucumber-rails
, поэтому он является файлом по умолчанию), но после запуска тестов он все равно удаляетсяданные базы данных test
.
# Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
# # { :except => [:widgets] } may not do what you expect here
# # as tCucumber::Rails::Database.javascript_strategy overrides
# # this setting.
# DatabaseCleaner.strategy = :truncation
# end
#
# Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
# DatabaseCleaner.strategy = :transaction
# end
Выдержка из Gemfile:
group :development, :test do
gem "rspec-rails"
end
group :test do
gem 'cucumber-rails'
gem 'database_cleaner'
gem 'capybara'
end