我开始按照https://github.com/neo4jrb/neo4j/wiki/How-To-Test编写单元测试
其中一种方法真的很慢(每次测试 10 秒),另一种不会删除标签(可能还有其他东西)
任何人都可以提出更精细的方法吗?我注意到在核心 neo4j 材料中,java 文档描述 了创建和拆除临时数据库的方法,但我没有看到从(非常好的)ruby 和 rails neo4j gems 访问这些方法的方法。也许通过低级 REST api?很难弄清楚哪些 api 调用可用。
我开始按照https://github.com/neo4jrb/neo4j/wiki/How-To-Test编写单元测试
其中一种方法真的很慢(每次测试 10 秒),另一种不会删除标签(可能还有其他东西)
任何人都可以提出更精细的方法吗?我注意到在核心 neo4j 材料中,java 文档描述 了创建和拆除临时数据库的方法,但我没有看到从(非常好的)ruby 和 rails neo4j gems 访问这些方法的方法。也许通过低级 REST api?很难弄清楚哪些 api 调用可用。
因此,您可能可以将您的测试围绕在事务中,这是ActiveRecord
在 Ruby 中进行测试的典型方法。这可能会更高效,但它也应该有助于保持数据库清洁。
但你是对的,无常数据库是 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 这样的数据库,您应该确保您的测试在每次测试运行之前都清除数据库,以便它总是重新开始