【问题标题】:How to test equality of MongoDB filters (BSON) in Java/Groovy?如何在 Java/Groovy 中测试 MongoDB 过滤器 (BSON) 的相等性?
【发布时间】: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


【解决方案1】:

你可以做的一件事是:

  • 将 Bson 转换为 BsonDocument
  • 比较 JSON 字符串

这是我发现的 https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/mongodb-user/peeL8wIWxwA/ZHpYglQEDQAJ

BsonDocument b1 = r1.toBsonDocument(BsonDocument.class, MongoClient.DEFAULT_CODEC_REGISTRY);
BsonDocument b2 = r2.toBsonDocument(BsonDocument.class, MongoClient.DEFAULT_CODEC_REGISTRY); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2018-04-19
    • 2011-12-24
    • 2010-10-02
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多