1
我有一个Ruby程序。该方案去
IO.popen('blah') { ... }
if $?.success?
...
大部分时间$?
是Process::Status
对象。偶尔它是零而不是。这使程序崩溃。很容易修复,对吧?
但我想写一个测试。
我有技术来模拟IO.popen调用,但我不能将$?
设置为零,因为它是只读的。如何将$?
设置为零?
我有一个Ruby程序。该方案去
IO.popen('blah') { ... }
if $?.success?
...
大部分时间$?
是Process::Status
对象。偶尔它是零而不是。这使程序崩溃。很容易修复,对吧?
但我想写一个测试。
我有技术来模拟IO.popen调用,但我不能将$?
设置为零,因为它是只读的。如何将$?
设置为零?
据我所知你不能设置这个。通过C代码的全局变量实际上可以扩展到一个函数调用,这是在这里(rb_last_status_get
)
会发生什么,最简单的是定义是更容易为您存根的方法,例如
module Process
def self.last_status
$?
end
end
然后使用Process.last_status
而不是$ ?.如果你对所有魔法全局之间的混淆,你可以明显地将它存根于规范中,并且它更具可读性。