我有一个模块,其中定义了一个函数:
module Settings
def find_by_name(name, start)
puts "find_by_name: Found me!"
end
在 miniTest 中,我试图以一种模拟它在运行时动态定义/调用的方式测试“发送”到这个函数。这就是我在 MiniTest 中尝试做的事情。
require 'settings'
class TestFileUtilities < MiniTest::Unit::TestCase
def test_dynamic_call_to_Settings
foreign_function = 'Settings::find_by_name'
send(foreign_function, 'name.txt', 'Users/MCP/Desktop/Projects/TestDir')
end
我期待的是 send() 将调用“foreign_function”方法,将字符串转换为符号,然后将两个参数添加到调用中。我想要的只是没有错误,并在我的控制台上放一个,以便我知道它正在工作......然后我将开始定义“断言”。现在虽然我得到:
NoMethodError: undefined method `Settings::find_by_name' for #<TestFileUtilities:0x007fdf59840310>
include Settings
这是我第一次尝试使用 Ruby 动态调用方法的能力,当我不使用范围解析运算符并且在其中时,我能够让它工作,TestFileUtilities
但我宁愿使用范围以便用户定义的函数不会与我的类中的任何东西冲突(不仅与 MiniTest 冲突,而且与实际的 FileUtilities 类冲突)。任何想法/帮助将不胜感激!对于在这里偶然发现信息的任何人来说,这就是让我开始的原因。