2014-11-05 80 views
2

我一直在嘗試使用當前使用圖數據庫(neo4j)作爲數據庫的項目進行初始Capybara測試。我嘗試按照這裏提到的步驟https://github.com/neo4jrb/neo4j/wiki/How-To-Test初始化測試。我Neo4j的測試服務器在端口上運行:7475當我運行Rails使用neo4j數據庫的rspec測試給出ActiveRecord :: AdapterNotSpecified-error

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中還需要設置或禁用哪些其他配置?

我已經附加的配置/測試文件到引擎收錄文檔http://pastebin.com/qXwyrK9k

+0

你使用-O跳過安裝的ActiveRecord的運行時,軌道'新myapp'? – subvertallchris 2014-11-05 16:38:34

+0

我最初並沒有真正創建這個項目,所以我認爲這個問題的答案是否定的。 – mpartan 2014-11-07 09:29:00

回答

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 
+0

非常感謝,快速和骯髒的解決方案很好地工作。我認爲長期的解決方案會更好,但至少現在這種方法可行。 – mpartan 2014-11-06 10:03:54