我正在尝试将日志记录添加到简单的rspec测试中。我正在使用Watir在规范中驱动Chrome,这很好用。我无法使用“Logger”库获取日志。
这是我的规范:
require 'rubygems'
require 'watir-webdriver'
require 'rspec'
require 'logger'
describe 'ui tests' do
let(:browser) { browser ||= Watir::Browser.new :chrome }
let(:log) {
log = Logger.new(STDOUT)
log = Logger.new('watir.tests.log', 'daily')
log.level = Logger::DEBUG
}
before {
browser.goto 'http://translate.google.com'
}
after { browser.close }
context 'simple tests' do
it 'simple test' do
log.info("Running simple test")
browser.text_field(:id => "source").set("ost")
# actual test/asserts here
end
end
end
问题是我无法在示例中调用任何日志记录方法,例如log.info。我收到这个错误:
Failures:
1) ui tests simple tests simple test
Failure/Error: log.info("Running simple test")
NoMethodError:
undefined method `info' for 0:Fixnum
为什么会失败?这是范围问题吗?如果我注释掉log.info
规范运行正常。我可以在示例中使用“浏览器”对象上的任何方法(例如,对browser.text_field的调用)没有问题。
我哪里错了?
答案 0 :(得分:6)
log
的值是let(:log) { }
块中评估的最后一个值,Logger::DEBUG
。这个常量只对应Fixnum
0,并且没有名为info
的方法为0.请尝试改为:
let(:log) {
Logger.new(STDOUT).tap { |l| l.level = Logger::DEBUG }
}
顺便说一下,您在设置log = Logger.new(STDOUT)
然后立即重新分配log = Logger.new('watir.tests.log', 'daily')
时想要做些什么?