我通过 JRuby 将 Ruby 嵌入到 Java 应用程序中,并且需要测试给定的 Ruby 脚本是否定义了各种方法。我有一个非常简单的 JRuby 设置:
ScriptingContainer container = new ScriptingContainer();
Object receiver = container.runScriptlet(new FileReader(SCRIPT_PATH));
SCRIPT_PATH
包含以下内容的文件在哪里:
def processDoc(doc)
return doc
end
我现在想确定脚本是否定义了该processDoc
方法,但除了实际调用之外找不到其他方法processDoc
,我希望避免这种方法。我已经尝试过respond_to? 'processDoc'
and methods.include? 'processDoc'
,但都不起作用,因为以下成功的断言集表明:
Object doc = new Object();
assert container.runScriptlet("respond_to? :processDoc") == Boolean.FALSE;
assert container.runScriptlet("methods().include? 'processDoc'") == Boolean.FALSE;
assert receiver == null;
assert container.callMethod(receiver, "processDoc", doc) == doc;
是否有任何其他技术可以用来确定一个简单的 JRuby 脚本是否定义了一个具有特定名称的方法,而不实际调用该方法?