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
而不是$ ?.如果你對所有魔法全局之間的混淆,你可以明顯地將它存根於規範中,並且它更具可讀性。