我正在对该类进行单元测试,该单元内部调用MongoDb驱动程序的FindAsync来检索文档。 对于每个要测试的方法,我想验证我方法中内置的FilterDefinition是否正确传递给MongoDB的FindAsync方法。
我已经设置了回调以使用以下代码捕获通过的过滤器:
var mockCursor = new Mock<IAsyncCursor<T>();
var mockMongoDbCollectionClient = new Mock<IMongoCollection<T>>();
mockMongoDbCollectionClient.Setup(o => o.FindAsync(It.IsAny<FilterDefinition<T>(), It.IsAny<FindOptions<T>(), It.IsAny<CancellationToken>()))
.Callback<FilterDefinition<T>, FindOptions<T>, CancellationToken>((f, o, t) =>
{
filter = f;
})
.ReturnsAsync(mockCursor.Object);
但是我不知道如何解析过滤器以验证它是否是预期的过滤器。 例如,如果要测试的方法中的过滤器是这样构建的:
var filter = Builders<T>.Filter.Eq("Type", "MyType")
我会在我的UT中检查通过的过滤器是否完全如上所述构建。