2012-07-10 29 views

回答

1

您需要將您的記錄器分配給Rails.logger for Rails才能使用它...爲了完全實現記錄器,您需要實現所有方法http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html(即#debug,#warn,#error, #fatal)

ENV["RAILS_ENV"] = "test" 
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") 

class Logger 
    @@log = [] 

    def self.info(message) 
    @@log.push(message) 
    end 

    def self.log 
    @@log 
    end 
end 


class TestLogCase < ActiveSupport::TestCase 
    def setup 
    Rails.logger = Logger 
    end 

    test "records the log" do 
    Rails.logger.info "My Message" 
    assert_true Logger.log.include?("My Message") 
    end                               
end 
+0

我想'ASSERT_TRUE Logger.log.include?'必須'ASSERT_TRUE Rails.logger .log.include?'? – 2012-07-10 16:49:38

+0

好的,這有幫助。但它不是在我的測試中調用新的Logger。它似乎在調用'Rails.logger'。 – 2012-07-10 16:57:29

+0

@BSeven 1)是的,你說的是正確的。 2)但是這個記錄器變成了Rails.logger。所以它應該使用你的記錄器。 – 2012-07-10 17:34:06

5

我建議一個較好的策略是嘲笑軌道記錄儀採用摩卡

class TestLogCase < ActiveSupport::TestCase 

    require 'mocha/mini_test' 

    test "records the log" do 
    Rails.logger.expects(:info).with('My message') 
    Rails.logger.info "My Message" 
    end 

end 
相關問題