我想测试我的功能。它们全部依赖于ISearchIndexClient
。我试图创建一个 Mock<ISearchIndexClient>
但我无法使用它,因为 ISearchIndexClient
不接受模拟.
在我的函数中,我正在调用
DocumentSearchResult<SearchData> result =
await client.Documents.SearchAsync<SearchData>(searchText, sp);
然后,我尝试将自定义客户端创建为
public class CustomSearchIndexClient : ISearchIndexClient { }
和
public class CustomDocumentsOperations : IDocumentsOperations { }
但我无法覆盖 SearchAsync<T>
.
如何测试我的功能?谢谢
最佳答案
SearchAsync
是一种很难模拟的扩展方法。如果您可以检查源代码并找出扩展方法正在调用哪些实例成员,您可以模拟它,但这对于一个简单的测试来说是很多工作
我建议抽象出这种紧密耦合的依赖关系,以便您的函数更易于测试。
将 Azure 特定代码包装在您控制的抽象后面,仅公开所需的功能,这应该使您能够更灵活地模拟外部依赖项,以便在测试时正确执行您的功能,
关于c# - 使用 ISearchIndexClient 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51821684/