2012-03-01 64 views
0

Authlogic似乎搞亂了我的單元測試。當我嘗試運行任何單元測試時,我得到:使用Authlogic in Rails 3.2進行單元測試

authlogic/acts_as_authentic/base.rb:31:in `acts_as_authentic': You must establish a database connection before using acts_as_authentic (StandardError) 

不管我的單元測試是什麼。即使我所有的單元測試文件都包含require 'test_helper',我仍然會收到錯誤信息。這當然會告訴我這個問題可能在我的test/test_helper.rb文件中。

這裏是我的test/test_helper.rb(基於示例here):

ENV["RAILS_ENV"] = "test" 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 
require 'authlogic/test_case' 

class ActiveSupport::TestCase 
    # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. 
    # 
    # Note: You'll currently still have to declare fixtures explicitly in integration tests 
    # -- they do not yet inherit this setting 
    fixtures :all 

    # Add more helper methods to be used by all tests here... 
end 

class ActionController::TestCase 
    setup :activate_authlogic 
end 

是任何人有這個問題?我不知道該怎麼辦。

+0

我得到了同樣的問題,但在使用RSpec的引擎中。 – Kris 2012-06-13 11:44:35

回答

0

對我來說,那是因爲我已經命名空間模型,例如Qwerty::User,這哪裏鏈接到非命名空間表,即users,不qwerty_users,當我使用Rails的生成,使新的模型,例如Qwerty::Post這也創造創建了一個包含模塊Qwerty

def self.table_name_prefix 
'qwerty_' 
end 

然後將其製作爲qwerty_users這是我的錯模型Qwerty::User的樣子,因此「必須建立一個數據庫連接」的錯誤。該表不存在。

最有可能有很多方法來得到這個錯誤,但我懷疑他們中的任何人都會直接與authlogic本身有關。