Как проверить JavaScripts без удаления данных из базы данных `test`? - PullRequest
5 голосов
/ 19 марта 2012

Я использую 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

1 Ответ

4 голосов
/ 04 мая 2012

Я столкнулся с той же проблемой, и мне удалось ее исправить, изменив следующую строку в ROOT_APP/features/support/env.rb

от

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

до

Cucumber::Rails::Database.javascript_strategy = :transaction

Надеюсь, это поможет ...

...