Chr*_*nch 8 ruby testing monkeypatching rcov
我正在尝试对我用Ruby编写的一段代码进行单元测试File.open.为了模仿它,我monkeypatched File.open到以下:
class File
def self.open(name, &block)
if name.include?("retval")
return "0\n"
else
return "1\n"
end
end
end
Run Code Online (Sandbox Code Playgroud)
问题是我使用rcov来运行整个事情,因为它使用File.open来编写代码覆盖率信息,它获得monkeypatched版本而不是真实版本.我如何取消monkeypatch这种方法将其恢复为原始方法?我试过搞乱alias,但到目前为止无济于事.
pea*_*kxu 13
扩展@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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3276 次 |
| 最近记录: |