Neo4j和Ruby:我如何加快单元测试?

时间:2015-04-05 23:05:53

标签: ruby unit-testing neo4j neo4j.rb

我开始按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的调用是什么。

1 个答案:

答案 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:

https://github.com/vcr/vcr

它基本上记录了对您的服务器发出的所有请求,然后再播放它们。这对于结果是幂等的API端点非常有用,但是如果你将它用于像Neo4j这样的数据库,你应该确保你的测试在每次测试运行之前清理数据库,以便它始终重新开始