我如何使用Moq IFindFluent来调用ToListAsync?
我正在测试MongoDB C#驱动程序的包装器。 我有这行代码:
Collection.Find(predicate).ToListAsync();
其中Collection
的类型为IMongoCollection
而Find(predicate)
返回实现IFindFluent
的实例。 ToListAsync()
是将结果转换为列表的扩展,我假设。
我正在尝试编写unit testing,我很难处理这个问题。 我不能创建一个包装类,因为那就是我正在做的事情。 我更愿意这样做,所以ToListAsync()
返回一个创建的列表或模拟Find()
返回一些可以列出的列表。
我为此做了一个小抽象层,因为我找不到任何合适的东西,并寻求帮助没有得到答案。
我创建了一个名为AppCollection
的接口/实现对,专门用于处理MongoDB接口。 IAppCollection
将有一个IAppCollection.ToList(predicate)
的方法, IAppCollection.ToList(predicate)
将运行Collection.Find(predicate).ToListAsync();
打电话,退回清单。 后来,模拟IAppCollection
以确保正确调用是一件小事。 虽然我无法在本机LINQ中测试谓词,但我至少可以编译谓词并将它们与传递/失败对象进行比较。