问题描述:

I've got an application I've been working on with ruby 1.9.1. I'd like to test the javascript in my UI and the default selenium driver for capybara doesn't support the events I need to test.

So I'm going through the process of using rvm to switch the application on to jruby for testing, since apparently celertiy/culerity only work on jruby at the moment. I've got my bundle installed and the application seems to work correctly on jruby, but when I try to run 'rake cucumber' I get the following output:

Using the default profile...

superclass mismatch for class SQLiteAdapter (TypeError)

/home/david/.rvm/gems/[email protected]/gems/database_cleaner-0.5.2/lib/database_cleaner/active_record/truncation.rb:11

/home/david/.rvm/gems/[email protected]/gems/database_cleaner-0.5.2/lib/database_cleaner/active_record/truncation.rb:239:in `require'

/home/david/.rvm/gems/[email protected]/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'

/home/david/.rvm/gems/[email protected]/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:227:in `load_dependency'

/home/david/.rvm/gems/[email protected]/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'

/home/david/.rvm/gems/[email protected]/gems/database_cleaner-0.5.2/lib/database_cleaner/configuration.rb:86:in `orm_strategy'

/home/david/.rvm/gems/[email protected]/gems/database_cleaner-0.5.2/lib/database_cleaner/configuration.rb:42:in `create_strategy'

/home/david/.rvm/gems/[email protected]/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/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/rb_support/rb_language.rb:143:in `load_code_file'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:158:in `load_file'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:61:in `load_files!'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:60:in `each'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime/support_code.rb:60:in `load_files!'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime.rb:185:in `load_step_definitions'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/runtime.rb:26:in `run!'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/cli/main.rb:54:in `execute!'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/../lib/cucumber/cli/main.rb:29:in `execute'

/home/david/.rvm/gems/[email protected]/gems/cucumber-0.9.2/bin/cucumber:8

rake aborted!

Command failed with status (1): [bundle exec /home/david/.rvm/rubies/jruby-...]

At one point I was using sqlite for my test db, but have since changed. I've even tried changing back to sqlite, but still get the same error. If I disable database_cleaner in features/support/env.rb the tests run, but they all fail mysteriously.

Anyone know what's going on here?

网友答案:

It appears this is a problem with the way that database cleaner and jdbc are interacting.

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

UPDATE: I found this question because I was struggling with the same issue. The version of database_cleaner I linked to above does indeed fix the issue, there is an issue on the database_cleaner project that notifies the team of the issue as well. I was able to get around it for the moment by:

# 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"

UPDATE UPDATE: this fix should be available on v0.6.0 of database_cleaner master

网友答案:

Did you check that the SQLite adapter you're using is compatible with jRuby? You'd need the following:

Gems: activerecord-jdbcsqlite3-adapter and jdbc-sqlite3

(I always install both, you might be good to go with only activerecord-jdbcsqlite3-adapter)

Then edit config/database.yml to use the jdbcsqlite3 adapter:

cucumber:
  adapter: jdbcsqlite3
  database: db/development.sqlite3
  timeout: 5000
相关阅读:
Top