gpt4 book ai didi

ruby - Un-monkey 修补 Ruby 中的类/方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:58 25 4
gpt4 key购买 nike

我正在尝试对我用 Ruby 编写的一段调用 File.open 的代码进行单元测试。为了模拟它,我将 File.open 修改为以下内容:

class File
def self.open(name, &block)
if name.include?("retval")
return "0\n"
else
return "1\n"
end
end
end

问题是我正在使用 rcov 来运行整个过程,因为它使用 File.open 来编写代码覆盖率信息,它获取的是 monkeypatched 版本而不是真实版本。 我怎样才能取消 monkeypatch 这个方法以将它恢复到原来的方法?我试过乱用 alias,但到目前为止无济于事。

最佳答案

扩展@Tilo 的答案,再次使用别名来撤消猴子修补。

例子:

# Original definition
class Foo
def one()
1
end
end

foo = Foo.new
foo.one

# Monkey patch to 2
class Foo
alias old_one one
def one()
2
end
end

foo.one

# Revert monkey patch
class Foo
alias one old_one
end

foo.one

关于ruby - Un-monkey 修补 Ruby 中的类/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com