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

Cod*_*ula 9 c# unit-testing moq mongodb-.net-driver

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

Collection.Find(predicate).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

where Collection类型IMongoCollection<T>Find(predicate)返回实现的实例IFindFluent<T, T>.ToListAsync()我假设是将结果转换为列表的扩展名.

我正在尝试编写单元测试,我很难处理这个问题.我不能创建一个包装类,因为这就是我正在做的事情.我宁愿让它成功,所以ToListAsync()返回一个创建的列表或模拟Find()返回可以作为列表的东西.

Cod*_*ula 2

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

我创建了一个专门调用的接口/实现AppCollection对来处理 MongoDB 接口。IAppCollection将有一个方法 for IAppCollection.ToList(predicate),并且AppCollection会运行Collection.Find(predicate).ToListAsync();调用,返回列表。IAppCollection后来,嘲笑 来确保做出正确的决定就变得微不足道了。虽然我无法在本机 LINQ 中测试谓词,但我至少可以编译谓词并将它们与通过/失败的对象进行比较。