[英]Ruby instance_eval confusion with load`
我正在尝试在红宝石中测试一种方法。 它基本上在一个单独的文件中:
a.rb:
def my_method
...
end
在我的a_spec.rb中
require 'minitest/autorun'
Object.instance_eval do
load("path_to/a.rb")
def hello_world
...
end
end
当我尝试运行测试时,它说my_method是私有方法,而实际上我可以直接调用Object.hello_world
。 是什么赋予了?
另外,有没有更简单的方法可以用minitest测试普通的红宝石方法(没有类或模块)?
进行上述加载不会将a.rb的方法作为单例方法添加到Object。 而是将方法添加到全局名称空间。 (事实上,您在self指向Object类的块内进行加载是无关紧要的。)
使用上面的代码,您应该可以在测试中直接调用* my_method *:
class MyTest < MiniTest::Unit::TestCase
def test_my_method
assert my_method
end
def test_hello_world
assert Object.hello_world
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.