2012-07-10 1 views

답변

1

레일즈를 사용하기 위해 레일즈 용 레일즈 로거에 할당해야합니다 ... 로거를 완벽하게 구현하려면 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

내가 Logger.log.include assert_true'생각하는 더 나은 전략은 모카를 사용하여 로거 레일을 조롱하는 게 좋을 것 것은?'Rails.logger assert_true'할 필요가 .log.include?'? –

+0

좋습니다. 하지만 내 테스트 내에서 새로운 로거를 호출하지 않습니다. 그것은 Rails.logger를 호출하는 것 같습니다. –

+0

@ BSeven 1) 예, 당신은 주장에 맞습니다. 2) 그러나이 로거는 Rails.logger가됩니다. 따라서 로거를 사용해야합니다. –

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