我正在尝试在ruby中测试一个方法。它基本上是一个单独的文件:
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的普通ruby方法(没有类或模块)?
答案 0 :(得分:0)
执行上面的加载不会将 a.rb 的方法作为单例方法添加到Object。相反,它将方法添加到全局命名空间。 (你在自我引用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