如何Mock执行结果ResultSet

对于ResultSet中的结构比较模糊,想要直接Mock出结果并直接set进自定义的property,希望能有老师解答。

可以看一下 ResultSet的实现

这个是 example
https://github.com/vesoft-inc/nebula-java/blob/master/examples/src/main/java/com/vesoft/nebula/examples/GraphClientExample.java

1 个赞

谢谢老师答疑,我想再请问一下:
我理解执行nGQL获取的ResultSet是以二维表形式展示的,解析ResultSet的过程是通过这个类提供有关行或者列的方法。那反过来比如我想mock查询某个顶点的结果,应该只需要mock列名和一行具体有关顶点的值。列名我理解应该对应ResultSet中的colmnName。具体值是存在ResultSet.Record里,解析的时候通常使用可迭代对象ValueWrapper,那反过来Mock值的时候是需要new valueWrapper再一步步构建出Record。
不知道这个理解是否可行。

1 个赞

是的

感谢答疑,方便的话我还有进一步的疑问:
mock值的时候我的步骤是 Value->ValueWrapper->Record->ResultSet,ResultSet的构造方法里传入了colNames(列),row(行),row的构造方法里又要传入具体的Value,所以转了一圈对于值的mock还是构建对应的Value。
在Value这个类里存在很多set方法,并且拥有很多的field,其中有个setFieldValue(int fieldId, Object obj)方法,我想请教一下这些field是不是对应具体的列,比如setFieldValue(1, something)就是代表指定某一行第一列的值为something,如果有误的话应该怎么理解,谢谢。

Value 只是一个对象,里面可以存放各种类型, Node,Edge,Int,Path,List… 直需要将 生成好的对象放入Value中即可。

我没在Value中找到 setFieldValue 函数啊

那请问如果我需要mock值的话,需要如何入手呢

可以参考一下 测试用例

感谢解惑