如果我打开撬并运行
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
答案 0 :(得分:0)
很可能你的环境在测试中与在pry中不同。你可以检查的一件事是你是否安装了任何软件包:
puts `npm ls`
如果没有安装软件包或者所有软件包都已更新,npm outdated
会立即返回,没有输出和成功的返回代码。这与您观察到的行为一致。
您也可以尝试运行npm config ls -l
来验证您的配置与运行命令的方式相同。