对于ruby来说相当新,玩Mini Test和log4r,尝试编写一个包装类。
收到以下错误:
$ ruby logger.rb
Run options: --seed 4605
# Running tests:
E
Finished tests in 0.000000s, Inf tests/s, NaN assertions/s.
1) Error:
test_debug_messages(TestLogger):
ArgumentError: wrong number of arguments (2 for 1)
/home/jamlopez/scripts/Yatra.Next/rpm_framework/lib/rpm/core/logger.rb:5:in `initialize'
logger.rb:6:in `new'
logger.rb:6:in `setup'
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
这是班级:
class RPMLogger
def initialize
require 'log4r', :version=>'=1.1.10'
@log = Logger.new 'log'
@log.outputters = Outputter.stdout
@logfile_location = brpm_home
@timenow = eval( Time.now.utc.iso8601 )
end
def debug( msg )
@log.debug ( '[DEBUG] ' + @timenow + " #{msg}" )
end
def info( msg )
@log.info ( '[INFO] ' + @timenow + " #{msg}" )
end
def warn( msg )
@log.warn ( '[WARNING] ' + @timenow + " #{msg}" )
end
def error( msg )
@log.error ( '[ERROR] ' + @timenow + " #{msg}" )
end
def fatal( msg )
@log.fatal ( '[FATAL] ' + @timenow + " #{msg}" )
end
end
以下是测试:
require 'minitest/autorun'
require_relative "./../../../lib/rpm/core/logger"
class TestLogger < MiniTest::Unit::TestCase
def setup
@logger = RPMLogger.new
@test_msg = "This is a test log message!"
end
def test_debug_messages
log = @logger.debug( @test_msg )
assert_match "/^[DEBUG] /", log, msg=nil
end
end
我是第一个承认两个文件中可能存在多个错误的人(因为我还在学习),但我会尝试一步一步。
我搜索了相关的SO文章,并在网上搜索了有关初始化&#39;的论据。要么它们没有直接关系,要么我误解了它们。任何帮助表示赞赏。
答案 0 :(得分:3)
您的错误就在这一行:
require 'log4r', :version=>'=1.1.10'
我不确定你打算做什么,但是require
会收到一个参数。错误wrong number of arguments
表示您尝试使用意外数量的参数调用方法。 (2 for 1)
表示您尝试使用一个带有两个参数的方法调用方法。
使用两个参数调用的initialize
中唯一的方法是require
- 所以这是有问题的方法。
require
用法位于ruby文件的顶部,告诉ruby解释器在加载此文件之前应该加载哪些其他ruby文件。
require
不声明gem依赖项,因此gem版本在这里无关紧要。您可以将它们放在Gemfile
文件中。