我开始按https://github.com/neo4jrb/neo4j/wiki/How-To-Test
的方式编写单元测试其中一种方法实际上很慢(每次测试10秒)而另一种方法不会删除标签(可能还有其他东西)
有人能建议更精细的方法吗?我注意到在核心neo4j材料中,java文档描述了methods that create and tear down temporary databases,但我没有看到从(非常好的)ruby和rails neo4j gems访问那些的方法。也许是通过低级REST api?很难弄清楚api的调用是什么。
答案 0 :(得分:1)
因此,您可以在事务中包围您的测试,这是在Ruby中使用ActiveRecord
进行测试的典型方法。这可能会更高效,但它也应该有助于保持数据库的清洁。
但是你是对的,非永久性数据库是Neo4j中为临时数据库提供测试的工具。我认为只有在你运行JRuby时才可用。不过我确实遇到了这个问题:
https://groups.google.com/forum/#!topic/neo4j/7xeEPWEiqD0
哪个链接指向允许您以“内存”模式启动Neo4j服务器的项目(使用非永久性数据库):
https://github.com/jexp/neo4j-in-memory-server
这显示了Neo4j 2.0.0的示例,因此我不知道它是否适用于更高版本,但它可能值得为您的测试数据库拍摄。
编辑:我刚才想到的另一件事是使用vcr
gem:
它基本上记录了对您的服务器发出的所有请求,然后再播放它们。这对于结果是幂等的API端点非常有用,但是如果你将它用于像Neo4j这样的数据库,你应该确保你的测试在每次测试运行之前清理数据库,以便它始终重新开始