2013-01-31 97 views
1

我已經設置了以下型號的聯繫人目錄RSpec的測試與Citier寶石失敗 - 類表繼承

class Contact < ActiveRecord::Base 
    acts_as_citier 
end 

class Company < Contact 
    acts_as_citier 
end 

class Operator < Company 
    acts_as_citier 
end 

的事情是,聯繫人可以是一個公司和運營商是一種公司與加不同的屬性。

由於單表繼承wasnt這個特定應用程序的工作,我決定使用citier寶石。

最後,我有三個表格爲每個模型。因此,當我添加一個公司對象時,我得到兩個條目,即一個聯繫人只有名稱attribuet和公司表中的其他屬性在兩個表中共享同一個id,並將兩個表的類型字段設置爲公司。如果我添加一個運算符,則會創建三個條目,即每個表中的一個與前兩個設置爲運算符的表的類型字段共享相同的ID。

我的應用程序工作正常明顯,但是我所有的測試都破即關於這些車型的 - 再加上糟糕的是,堆棧級別太深,因爲我得到以下錯誤消息全部碎裂測試。

Failure/Error: Unable to find matching line from backtrace 
    SystemStackError: 
     stack level too deep 
    # /home/ali/.rvm/gems/ruby-1.9.2-p318/bundler/gems/rails_sql_views-0cf1af369a5f/lib/rails_sql_views/connection_adapters/abstract_adapter.rb:23 

我做了rails_sql_views/connection_adapters/abstract_adapter.rb文件的檢查ATLEAST在上述錯誤的行號,它只是有這樣一行:

self.class.send(:alias_method, :tables, :original_tables_method) 

我使用的是PostgreSQL數據庫在這裏。大約300個測試都具有相同的消息:(

注意:所有失敗的測試是那些涉及任何樣的變化這些模型的破

那。

回答

2

我做了一些擺弄周圍,並結束改變我的gemfile中的rails_sql_views gem的git cource來讀取git://github.com/flwyd/rails_sql_views.git

擺脫了堆棧級別太深的事情但是我得到一個全新的錯誤 - 我的測試仍然失敗 - 由於某種原因它將我的觀點視爲一張桌子,我會跟進一個新的問題o n這個

---- ----- UPDATE

我得到它的工作,我在規格/ spec_helper.rb文件做了些改動,並註釋掉以下兩行:

#config.use_transactional_fixtures = true # because I'm not using fixtures here 

#DatabaseCleaner.strategy = :truncation 

由於某種原因Database.strategy配置給我的問題 - 這是我修復它的情況之一,但並不真正知道它是如何修復的。我會做一些閱讀。在此期間,我的測試現在運行良好!