ruby rr:如何存根/模拟像$这样的内置变量?

时间:2016-09-07 18:29:56

标签: ruby unit-testing mocking rr

为以下内容编写单元测试时:

jQuery.ajaxSettings

我被卡住了,因为我不知道如何模拟/存根def foo() popen_response = "" IO.popen(@packaging_cmd, :err=>[:child, :out]) {|io| popen_response = io.read } rc = $? @log.debug{"Response from IO.popen() : #{popen_response}. rc: '#{rc}'"} if rc.exitstatus != 0 @log.error{"Packaging failed. rc: '#{rc}'"} raise PackagingError.new("Packaging failed. rc: '#{rc}'") end end 评估的内容。我可以通过创建一个返回$?的函数并使用传递给$?的teh命令来模拟该函数或修补器来解决这个问题,但是我想知道RR中是否有任何可以使用的官方方法。

我使用IO.popen()与库存rr

Test::Unit::TestCase

1 个答案:

答案 0 :(得分:1)

我不确定您使用的是哪个模拟框架,但在RSpec中:

allow_any_instance_of(Process::Status).to receive(:exitstatus).and_return(0)