gpt4 book ai didi

ruby:无法将记录器与 rspec 一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:54 27 4
gpt4 key购买 nike

我正在尝试将日志记录添加到一个简单的 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 的调用)而不会出现问题。

我哪里错了?

最佳答案

log 的值是 let(:log) { } block 中最后计算的值,即 Logger::DEBUG .此常量仅对应于 Fixnum 0,并且没有用于 0 的名为 info 的方法。试试这个:

let(:log) { 
Logger.new(STDOUT).tap { |l| l.level = Logger::DEBUG }
}

顺便说一句,你想通过设置 log = Logger.new(STDOUT) 然后立即重新分配 log = Logger.new('watir.tests.log' , '每日')?

关于ruby:无法将记录器与 rspec 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com