【发布时间】:2016-08-18 14:18:45
【问题描述】:
我正在生成 MongoDB 查询,不使用 Filters-API。
Bson r1 = Filters.and(Filters.eq("a","b"), Filters.eq("c","d"))
Bson r2 = Filters.and(Filters.eq("a","b"), Filters.eq("c","d"))
但是如何检查结果是否相等?例如:
r1.equals(r2)
和
r1.dump().equals(r2.dump())
不工作。
【问题讨论】:
-
为了清楚起见,您要求诸如“单元测试”之类的东西如何查看一个定义是否与另一个定义相同?您是否查看过任何语言的驱动程序测试?这应该可以很好地说明这是如何为他们自己的单元测试完成的。也有点想知道您为什么要打扰,因为这正是那种“单元测试”,它实际上是“驱动程序”的领域,而不是真正适合您的应用程序。
-
@BlakesSeven 我想测试的方法使用过滤器 API 来生成(或多或少复杂的)过滤器查询。我想测试该方法是否根据它所需要的参数生成正确的输出。
-
明白。但是其中的重要基本提示是“看看驱动程序是如何做到的”,因为该代码很容易访问。每个单一的语言驱动程序都以相同的方式完成它,基本上具有预期的数据结构,然后使用这些方法从构造的查询中转储该数据结构的“标准形式”,以查看它们是否相同。 Java/Groovy 没有“本机”数据结构表示法。但是你确实有 BSON Document 对象可以使用。
标签: java mongodb unit-testing groovy spock