2013-10-05 122 views
1

我的測試套件由guard,rspec,spork和capybara組成。我對TDD相當陌生,但在學習之前,我會經常看到由服務器輸出中的rails生成的數據庫查詢(使用thin)。這很有用,因爲我可以立即看到何時需要進一步優化查詢。在rails測試套件中顯示的數據庫調用

我想知道這種行爲是否可以用上述工具的任何寶石來實現,或者如果在我的測試中可以使用另一個gem來輸出類似的信息。

我在我的測試套件中的主要寶石如下:

group :development, :test do 
    gem 'rspec-rails' 
    gem 'guard-rspec' 
    gem 'spork-rails' 
    gem 'guard-spork' 
end 

group :test do 
    gem 'capybara' 
    gem 'selenium-webdriver', "~> 2.35.1" 
end 

回答

3

可以檢查測試日誌生成的數據庫查詢:

$ tail -f log/test.log 

它顯示了所有執行的查詢+一很少用於設置測試數據庫的插入和回滾語句。

+0

我懷疑查詢是默認關閉的。問題是記錄原始數據庫查詢是不安全的(在生產中,obv),所以現代Rails保持關閉所有數據庫查詢日誌記錄。 – Phlip

+0

@Philp我剛剛測試我最近的應用程序。它適用於我在上述測試環境中,我不記得做任何記錄器調整。 –

+0

這是行不通的,但是我怎麼去關於如何使用guard來自動化它,以便將它作爲我的測試的一部分輸出。可能可選?我會一直搞亂,看看我能想出什麼 – DazBaldwin

0

這是一個常見問題;在您的environments/test.rb文件中嘗試ActiveRecord::Base.logger.level = Logger::DEBUG

接下來,學習Rails & TDD,不要使用Capybara。堅持與RSpec。我應該說堅持正常的測試用例,但RSpec已經吃掉了這個空間,所以你會發現很多的在線支持。

水豚是測試先進的&端到端的事情。您只需要TDD,即您的數據庫包含如此之多,並且您生成的網頁包含諸如此類的內容,所以請堅持。

+0

對不起延遲響應,這是行不通的,它給nil:NilClass(NoMethodError)提供未定義的方法'level =',如果你需要的話,會有一個完整的堆棧跟蹤。 – DazBaldwin