我正在使用javax.script中的JavaScript支持来对JS脚本进行一些基本的单元测试,而且我遇到了一个问题。
我有一些代码eval(...)
是我在ScriptEngine实例中拥有的先决条件lib文件,包括我的函数等等的文件。
然后我在同一个ScriptEngine实例中评估另一个文件,其中我有一些函数作为测试,然后我调用测试。
然而,尽管所有的逃避工作没有问题,我收到一个错误,对我来说建议加载函数时出现问题。
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function blah. (<Unknown source>#x) in <Unknown source> at line number x
答案 0 :(得分:0)
同一个eval
上的两个单独的ScriptEngine
来电对我有用。您是否设置了新的ScriptContext
或以其他方式取消了blah
的定义?
public class TryScripting {
public static void main(String[] args) throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
String makeFun = "function hello() {\n" +
"return \"hello world\";\n" +
"}\n" +
"{\n" +
"}";
engine.eval(makeFun);
engine.eval("myVar = hello()");
ret = engine.get("myVar");
System.out.println(ret);
}
}