加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

有没有办法设置$的值?在Ruby中的模拟?

发布时间:2020-12-17 04:23:39 所属栏目:百科 来源:网络整理
导读:我正在测试一些与系统命令接口的脚本.它们的逻辑取决于系统命令的返回码,即$?的值.因此,作为简化示例,脚本可能会说: def foo(command) output=`#{command}` if $?==0 'succeeded' else 'failed' endend 为了能够正确地测试这些方法,我希望能够存根内核反引
我正在测试一些与系统命令接口的脚本.它们的逻辑取决于系统命令的返回码,即$?的值.因此,作为简化示例,脚本可能会说:
def foo(command)
  output=`#{command}`
  if $?==0
    'succeeded'
  else
    'failed'
  end
end

为了能够正确地测试这些方法,我希望能够存根内核反引号调用,并设置$?到一个任意值,看看在反引号调用后我是否从方法中的逻辑得到了适当的行为. $?是一个只读变量,因此以下不起作用:

$? = some_number

我可以做一些简单的事情:例如,设置$?为零或非零.例如,将设置$?到0或35212(在我的系统上,无论如何),取决于$?的值:

def fail_or_succeed(success)
  if success
    `echo foo`
  else
    `a-non-existent-command 2>&1`
  end
end

我真正想要做的是设置$?特定值(例如3或122),不仅是零或任意非零.我无法想办法做到这一点. (如果重要,我正在使用Test :: Unit和Mocha进行测试.)

解决方法

编辑:使用丹尼斯威廉姆森的建议:
command = "(exit 21)"

并使用如果$?. exitstatus == 0而不是if $? == 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读