相关疑难解决方法(0)

如何在RSpec中验证退出和中止?

我正在尝试为脚本接收的命令行参数指定行为,以确保所有验证都通过.我的一些命令行参数将导致abort或被exit调用,因为提供的参数缺失或不正确.

我正在尝试这样不起作用的东西:

# 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
Run Code Online (Sandbox Code Playgroud)

exit方法干净利落地阻止RSpec验证测试(我得到"SystemExit:exit").

我也尝试过,mock(Kernel)但是这也没有按照我的意愿工作(我没有看到任何明显的区别,但这可能是因为我不确定如何模拟内核并确保在我的内核中使用了模拟的内核Something类).

ruby rspec mocking

42
推荐指数
4
解决办法
1万
查看次数

如何规范退出或中止的方法

我有一个从CLI触发的方法,它有一些明确退出或中止的逻辑路径.我发现在为此方法编写规范时,RSpec将其标记为失败,因为退出是异常.这是一个简单的例子:

def cli_method
  if condition
    puts "Everything's okay!"
  else
    puts "GTFO!"
    exit
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以将规范包装在lambda中should raise_error(SystemExit),但是忽略了块内发生的任何断言.要明确:我不是在测试退出本身,而是在它之前发生的逻辑.我该如何选择这种方法呢?

ruby rspec

10
推荐指数
2
解决办法
3688
查看次数

标签 统计

rspec ×2

ruby ×2

mocking ×1