模拟mongo查询

时间:2016-04-13 10:14:19

标签: java mongodb mocking

我想模拟我对mongo集合的查询,并确认在查询中设置了正确的参数。

正在测试的代码是

Bson query = eq("name",name);
if (version!=null) {
    query = and(query,eq("version",version));
}
Document retrievedDoc =  collection.find(query).sort(descending("version")).first();

我想写的测试是

Bson query = and(eq("name","test.TestClass"),eq("version",1));
when(collection.find(<some matcher>).thenReturn(result);
然而,Bson没有实现equals,并且它没有任何明显的方法来获取它的任何内容来编写自定义匹配器或用来测试捕获的Bson。

我使用mockito虽然我认为不重要。

有没有什么好方法来断言关于查询的更多信息呢?

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。 由于Bson没有实现equals,我只使用org.bson.Document而不是Bson。

我是怎么做到的:

Document query = new Document("name",name);
if (version!=null) {
    query = new Document("$and", asList(query, new Document("version",version)));
}
Document retrievedDoc =  collection.find(query).sort(descending("version")).first();

并且测试应该像:

Document query = new Document("$and", asList(new Document("name","test.TestClass"), new Document("version",1)));
when(collection.find(query).thenReturn(result);