Выполнение интеграционных тестов с Cucumber / capybara / celerity в приложении Jruby on Rails с использованием mysql - PullRequest
2 голосов
/ 25 октября 2010

У меня есть приложение, над которым я работаю с ruby ​​1.9.1. Я хотел бы протестировать javascript в своем пользовательском интерфейсе, а драйвер селена по умолчанию для капибары не поддерживает события, которые мне нужно протестировать.

Итак, я прохожу процесс использования rvm для переключения приложения на jruby для тестирования, так как очевидно, что celertiy / culerity работает только на jruby на данный момент. У меня установлен пакет, и приложение, похоже, работает правильно на jruby, но когда я пытаюсь запустить 'rake cucumber', я получаю следующий вывод:

Using the default profile...
superclass mismatch for class SQLiteAdapter (TypeError)
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/database_cleaner-0.5.2/lib/database_cleaner/active_record/truncation.rb:11
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/database_cleaner-0.5.2/lib/database_cleaner/active_record/truncation.rb:239:in `require'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:227:in `load_dependency'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/database_cleaner-0.5.2/lib/database_cleaner/configuration.rb:86:in `orm_strategy'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/database_cleaner-0.5.2/lib/database_cleaner/configuration.rb:42:in `create_strategy'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/database_cleaner-0.5.2/lib/database_cleaner/configuration.rb:56:in `strategy='
/home/david/rental/features/support/env.rb:58
/home/david/rental/features/support/env.rb:143:in `load'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/rb_support/rb_language.rb:143:in `load_code_file'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:158:in `load_file'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:61:in `load_files!'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:60:in `each'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:60:in `load_files!'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime.rb:185:in `load_step_definitions'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime.rb:26:in `run!'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/cli/main.rb:54:in `execute!'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/../lib/cucumber/cli/main.rb:29:in `execute'
/home/david/.rvm/gems/jruby-1.5.3@test2/gems/cucumber-0.9.2/bin/cucumber:8
rake aborted!
Command failed with status (1): [bundle exec /home/david/.rvm/rubies/jruby-...]

В какой-то момент я использовал sqlite для моей тестовой базы данных, но с тех пор изменился. Я даже пытался вернуться на sqlite, но все равно получаю ту же ошибку. Если я отключу database_cleaner в functions / support / env.rb, тесты будут запущены, но все они загадочным образом не пройдут.

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Похоже, это проблема с тем, как взаимодействуют очиститель базы данных и jdbc.

http://github.com/tmikoss/database_cleaner/commit/83d85cf7740e4aef97dd6fd5c0908cb09a2f0ca9

ОБНОВЛЕНИЕ: Я нашел этот вопрос, потому что боролся с той же проблемой.Версия database_cleaner, на которую я ссылался выше, действительно решает проблему, есть проблема в проекте database_cleaner, которая также уведомляет команду о проблеме.На данный момент мне удалось обойти это:

# someplace on your computer    
git clone http://github.com/tmikoss/database_cleaner.git

#in your projects Gemfile
gem "database_cleaner", :path => "path/to/above/copy/of/gem"

ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ: это исправление должно быть доступно на v0.6.0 мастера database_cleaner

0 голосов
/ 25 октября 2010

Проверяли ли вы, что используемый вами адаптер SQLite совместим с jRuby?Вам понадобится следующее:

Драгоценные камни: activerecord-jdbcsqlite3-adapter и jdbc-sqlite3

(я всегда устанавливаю оба варианта, вам может пригодиться только activerecord-jdbcsqlite3-adapter)

Затем отредактируйте config/database.yml, чтобы использовать адаптер jdbcsqlite3:

cucumber:
  adapter: jdbcsqlite3
  database: db/development.sqlite3
  timeout: 5000
...