gpt4 book ai didi

ruby - 如何验证 RSpec 中的退出和中止?

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

我正在尝试为我的脚本接收到的命令行参数指定行为,以确保所有验证都通过。我的某些命令行参数将导致调用 abortexit,因为提供的参数丢失或不正确。

我正在尝试类似这样的方法,但它不起作用:

# something_spec.rb
require 'something'
describe Something do
before do
Kernel.stub!(:exit)
end

it "should exit cleanly when -h is used" do
s = Something.new
Kernel.should_receive(:exit)
s.process_arguments(["-h"])
end
end

exit 方法干净地触发,阻止 RSpec 验证测试(我得到“SystemExit:exit”)。

我也尝试过 mock(Kernel) 但这也没有像我想要的那样工作(我没有看到任何明显的区别,但这可能是因为我不确定如何完全模拟内核并确保在我的 Something 类中使用模拟内核)。

最佳答案

试试这个:

module MyGem
describe "CLI" do
context "execute" do

it "should exit cleanly when -h is used" do
argv=["-h"]
out = StringIO.new
lambda { ::MyGem::CLI.execute( out, argv) }.should raise_error SystemExit
end

end
end
end

关于ruby - 如何验证 RSpec 中的退出和中止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1480537/

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