0
如果我打開撬和運行爲什麼反向測試時首先退出命令?
o = `npm outdated`
我得到我所期望的行爲,它阻止一切,直到npm
命令返回和存儲輸出。
同樣的代碼,在一個測試:
def get_outdated
o = `npm outdated`
end
def test_get_outdated
assert_equal(true, get_outdated().length > 1)
end
失敗,因爲如果我打印o
迴歸之前,它是空的,我注意到,在測試運行方式速度更快,因此是不可能的,它等待,直到命令結束。
打印該過程的退出代碼,顯示沒有錯誤。
puts $?.success? #=> true
Ruby'backtick'方法是同步的,即它等待它調用返回的命令。你可以用'echo foo'來代替你的命令,並確定它可以工作。我想這個問題來自你的'npm'。嘗試'npm set progress = false'或在測試中打印'get_outdated'結果以進行更深入的檢查。 – ehoffmann
有很多事情可能是錯誤的,其中很少有我們可以在沒有更多信息的情況下進行調試。也就是說,你可能想要檢查不同的環境變量,特別是。當前工作目錄和'PATH'。 –