rle*_*ber 8 ruby testing mocha.js
我正在测试一些与系统命令接口的脚本.它们的逻辑取决于系统命令的返回码,即$?的值.因此,作为简化示例,脚本可能会说:
def foo(command)
output=`#{command}`
if $?==0
'succeeded'
else
'failed'
end
end
Run Code Online (Sandbox Code Playgroud)
为了能够正确地测试这些方法,我希望能够发出内核反引号调用,并设置$?到一个任意值,看看在反引号调用后我是否从方法中的逻辑得到了适当的行为.$?是一个只读变量,因此以下不起作用:
$? = some_number
Run Code Online (Sandbox Code Playgroud)
我可以做一些简单的事情:例如,设置$?为零或非零.例如,将设置$?到0或35212(在我的系统上,无论如何),取决于$?的值:
def fail_or_succeed(success)
if success
`echo foo`
else
`a-non-existent-command 2>&1`
end
end
Run Code Online (Sandbox Code Playgroud)
我真正想要做的是设置$?到特定值(例如3或122),不仅是零或任意非零.我无法想办法做到这一点.(如果重要的话,我正在使用Test :: Unit和Mocha进行测试.)
Ale*_*huk 10
编辑:使用丹尼斯威廉姆森的建议:
command = "(exit 21)"
Run Code Online (Sandbox Code Playgroud)
并使用if $?.exitstatus == 0而不是if $? == 0
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |