相关疑难解决方法(0)

GraalVM - 在没有上下文的情况下使用多语言值

我正在 Graal 上编写一个应用程序,它将能够以不同的语言执行小脚本。

我正在尝试为我用来将 Context.eval() 调用(类型:值)的结果转换/处理为 Java 对象的类编写一些单元测试。我从文档中知道一个 Value 实例总是绑定到一个上下文,所以当我尝试写这样的东西时:

@Test
public void NumericFloatTest() throws ScriptExecutionException {

    GuestLanguageResultProcessor LangProcessor = new GuestLanguageResultProcessor();
    Float javaValue = (float) 43.25;
    Value numValue = Value.asValue(javaValue);
    LangProcessor.processResult(numValue);

    Object result = LangProcessor.processResult(numValue);

    assertThat(result.getClass()).isEqualTo(Float.class);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

java.lang.IllegalStateException: No current context is available. Make sure the Java method is invoked by a Graal guest language or a context is entered using Context.enter().
Run Code Online (Sandbox Code Playgroud)

我想从概念上讲,拥有一个没有相关客户代码位的“值”实例是没有意义的,所以我的问题是:

我该如何测试我的 GuestLanguageResultProcessor 类?我是否必须通过创建上下文来“膨胀”我的单元测试?

专家的附带问题:我还使用此类 (GuestLanguageResultProcessor) 从多语言 Value 实例中提取 Java 值,以便我可以关闭上下文。换句话说,在我看来,在能够执行 Context.close() 之前,我需要调用 [value instance].asString() 或 …

graalvm

3
推荐指数
1
解决办法
673
查看次数

标签 统计

graalvm ×1