gpt4 book ai didi

ruby - 使用 RSpec 测试警告

转载 作者:数据小太阳 更新时间:2023-10-29 06:48:07 25 4
gpt4 key购买 nike

是否可以使用 RSpec 在 Ruby 中测试警告?

像这样:

class MyClass
def initialize
warn "Something is wrong"
end
end

it "should warn" do
MyClass.new.should warn("Something is wrong")
end

最佳答案

warnKernel 中定义,它包含在每个对象中。如果您在初始化期间没有发出警告,您可以指定这样的警告:

obj = SomeClass.new
obj.should_receive(:warn).with("Some Message")
obj.method_that_warns

指定在 initialize 方法中引发的警告要复杂得多。如果必须这样做,您可以将伪造的 IO 对象换成 $stderr 并检查它。一定要在示例之后恢复它

class MyClass
def initialize
warn "Something is wrong"
end
end

describe MyClass do
before do
@orig_stderr = $stderr
$stderr = StringIO.new
end

it "warns on initialization" do
MyClass.new
$stderr.rewind
$stderr.string.chomp.should eq("Something is wrong")
end

after do
$stderr = @orig_stderr
end
end

关于ruby - 使用 RSpec 测试警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449187/

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