c# - 使用 ISearchIndexClient 进行测试
问题描述
我想测试我的功能。它们都依赖于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 特定代码包装在您控制的抽象后面,仅公开所需的功能,这应该使您可以更灵活地模拟外部依赖项,以便在测试时正确行使您的功能,