用neo4j-database对Rails进行rspec测试,得出ActiveRecord :: AdapterNotSpecified-error

时间:2014-11-05 10:59:08

标签: ruby-on-rails ruby rspec neo4j capybara

我一直在努力让初始的Capybara测试与我目前使用图形数据库(neo4j)作为数据库的项目一起工作。我尝试按照此处提到的步骤https://github.com/neo4jrb/neo4j/wiki/How-To-Test初始化测试。我的neo4j测试服务器在端口运行:7475当我运行

rspec spec/features/users_sign_up.rb

我收到了这个错误:

ruby-2.1.2/gems/activerecord-4.1.6/lib/active_record/connection_adapters/connection_specification.rb:257:in `resolve_symbol_connection': 'test' database is not configured. Available: [] (ActiveRecord::AdapterNotSpecified)
ruby-2.1.2/gems/activerecord-4.1.6/lib/active_record/connection_adapters/connection_specification.rb:224:in `resolve_connection'
... more stack
spec/features/users_sign_up.rb:4:in `<top (required)>'

所以它试图使用database.yml中提到的数据库。除了添加

之外,还需要设置或禁用其他配置
 config.neo4j.session_type = :server_db
 config.neo4j.session_path = 'http://localhost:7475'

在test.rb?

我已将config / test-files附加到pastebin-document http://pastebin.com/qXwyrK9k

1 个答案:

答案 0 :(得分:3)

即使您没有使用ActiveRecord,您的应用仍在加载它,RSpec很生气它不知道在哪里可以找到它的数据库。至少有两种可能的解决方案。

快速而又脏,请将以下内容插入config/database.yml

test:
  <<: *default
  database: db/test.sqlite3

确保您的Gemfile中有gem 'sqlite3'

或者,如果您知道自己不打算使用ActiveRecord,甚至不想在应用中加载它,则可以更改application.rb,如下所示:

# require 'rails/all'
require "active_model/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
require 'neo4j/railtie'

然后在rails_helper.rb文件中注释掉以下几行:

config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true