如何解决如何用Java编写gremlin查询的单元测试?
例如连接到客户端:
val client = Cluster.open(MapConfiguration(config)).connect()
并执行查询
client.submitAsync(PreparedStatement.addUser,map).await().all().join()
PreparedStatement.addUser
-gremlin字符串
问题是:如何对Java中的客户端查询进行单元测试。我想到了用inMemoryDB
对查询进行单元测试。我们可以作为客户端运行inMemoryDB
,因为如果连接到内存DB时默认返回traversal()
?还是可以在traversal
上执行gremlin查询字符串?
解决方法
如果将Gremlin字符串发送到Gremlin Server,则可以将测试视为集成测试,并且实际上可以使用配置的JanusGraph in-memory instance启动Gremlin Server实例。在某些情况下,根据需要测试的内容,TinkerGraph也可能满足要求。
如果您想要更多的纯单元测试,则必须进行一些模拟,但这会很复杂,因为其中涉及一些非公共类,并且类依赖关系很重要。我认为第一个问题将是ResultSet
需要的ResultQueue
和Client
类。我创建了这个问题TINKERPOP-2428。
我认为基于字节码的请求比脚本具有更少的挑战性,因为您可以模拟RemoteConnection
以返回自己的Traversal
实例。甚至有EmbeddedRemoteConnection
都可以让您定义一个本地GraphTraversalSource
进行测试(如果这种情况适合您)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。