使用Kogito,我试图为返回数组的DMN文件创建一个测试场景。为了测试,我创建了一个简单的DMN,它将返回一个对象数组,而不管输入如何。
但是,如果我向返回数组添加了一个值,测试就会失败,如果我有零个元素作为预期的结果,它们就会通过,这是没有意义的。看起来,如果从测试中执行DMN,则不返回任何值。
如果我在api上运行它,它总是按照预期返回数组上的一个元素。
我一直在试图找出如何在visual studio上调试这一点,而没有任何运气。
预期的结果正在像这样写在文件上,但是没有结果返回。
[{"name":"\"jose\"", "ages":"[12,13]"}]基本上,一些方法来调试这将是伟大的,或任何帮助,可以指出我的正确方向。
提前感谢
何塞
发布于 2022-06-28 09:46:27
这里有两点需要解决,一是与您面临的错误有关,二是了解如何在运行阶段调试scesim资产。
scesim资产有一个众所周知的限制,这就是您的情况。特别是,您在预期列中为您的Simple类型定义了以下列表:

这里的问题是ages字段,它是一个嵌套列表。提供[12,13]作为该列表的参数,在形式上是正确的。但是,由于我提到的限制,它目前不起作用。有一个解决方法可以使用,即使用表达式定义列表,如下面的屏幕截图所示:

表达式? = {"name":"jose","ages":[12, 13]}意味着使用一个对象检查实际值(?)是否相等,该对象包含一个值为jose的字段name和以[12, 13]为值的字段ages。请注意,根据您定义的逻辑,您希望只包含一个项目的Simple类型列表。如果Simple类型返回包含多个项的列表,则表达式应该由列表而不是单个对象组成(例如。? = [{"name":"jose","ages":[12, 13]}, {"name":"john","ages":[1, 3]}, .. ]我们意识到这并不理想,我们正在定义一种改进用例体验的方法。请继续关注KIE频道,以了解更多的信息,或者给出改进的提示!
scesim文件,让我们使用mvn clean install运行它。正如您所报告的,除了一个例外,它将失败。让我们尝试在堆栈跟踪中的一个报告行中放置一个断点(例如。在org.drools.scenariosimulation.backend.runner.AbstractScenarioRunner.singleRunScenario(AbstractScenarioRunner.java:125)

在那条线上放个断点。现在,要在调试模式下启动scesim引擎,请转到scesim激活器类(通常称为KogitoScenarioJunitActivatorTest)。在这里,您可以像Junit测试类一样运行/调试scesim资产。

https://stackoverflow.com/questions/72743124
复制相似问题