使用 ISearchIndexClient 进行测试
Test with 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 的代码包装在您控制的抽象背后,仅公开所需的功能,这应该允许您更灵活地模拟外部依赖项以在测试时正确执行您的功能,
我想测试我的功能。它们都依赖于 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 的代码包装在您控制的抽象背后,仅公开所需的功能,这应该允许您更灵活地模拟外部依赖项以在测试时正确执行您的功能,