我正在尝试与Arango组建一个单元测试设置。为此,我需要能够围绕每个测试重置测试数据库。
我知道我们可以直接从REST API中删除数据库,但文档中提到创建和删除可能“需要一段时间”。
这是建议的方式进行这种设置还是有AQL语句来做类似的事情?
答案 0 :(得分:6)
例如,您可以检索all collections(不包括系统版)和drop或truncate列表。后者将删除所有文档并保留索引。或者,您可以使用AQL REMOVE声明。
答案 1 :(得分:5)
经过一些与类似需求的斗争后,我找到了这个解决方案:
for (let col of db._collections()) {
if (!col.properties().isSystem) {
db._drop(col._name);
}
}
答案 2 :(得分:2)
创建数据库可能确实需要一段时间(几秒钟)。如果在单个测试设置中设置和拆除每个测试的环境太昂贵,则有以下选项:
每个测试套件(包含多个测试)仅创建和删除一个专用测试数据库,并为每个测试创建/删除所需的集合。在许多情况下,这已经证明足够快,但这取决于每个测试套件中包含多少测试。
不要创建和删除专用测试数据库,而只是让每个测试都创建并删除所需的集合。这是最快的选择,如果您在新数据库中开始每个测试运行,它应该足够好。但是,它需要测试才能正确清理所有内容。这通常没有问题,因为测试通常会使用专用的集合。图表数据有一个例外:创建命名图表会将图形描述存储在_graphs
集合中,并且必须再次删除该图表。
答案 3 :(得分:2)
执行以下AQL查询会删除集合 yourcollectionname 中的所有文档:
FOR u IN yourcollectionname
REMOVE u IN yourcollectionname