我如何使用Moq IFindFluent来调用ToListAsync?

我正在测试MongoDB C#驱动程序的包装器。 我有这行代码:

Collection.Find(predicate).ToListAsync(); 

其中Collection的类型为IMongoCollectionFind(predicate)返回实现IFindFluent的实例。 ToListAsync()是将结果转换为列表的扩展,我假设。

我正在尝试编写unit testing,我很难处理这个问题。 我不能创建一个包装类,因为那就是我正在做的事情。 我更愿意这样做,所以ToListAsync()返回一个创建的列表或模拟Find()返回一些可以列出的列表。

我为此做了一个小抽象层,因为我找不到任何合适的东西,并寻求帮助没有得到答案。

我创建了一个名为AppCollection的接口/实现对,专门用于处理MongoDB接口。 IAppCollection将有一个IAppCollection.ToList(predicate)的方法, IAppCollection.ToList(predicate)将运行Collection.Find(predicate).ToListAsync(); 打电话,退回清单。 后来,模拟IAppCollection以确保正确调用是一件小事。 虽然我无法在本机LINQ中测试谓词,但我至少可以编译谓词并将它们与传递/失败对象进行比较。