如何解决在 Azure.Search.Documents v11.2.0
我正在尝试找到一种方法,用不同的参数对 SearchResults<T> Class
的搜索结果进行单元测试。
与之前的包 DocumentSearchResult<T> Class
中的 Microsoft.Azure.Search.Data v10.1.0
相比,SearchResults<T> Class
没有任何构造函数,只有属性和方法。
DocumentSearchResult<T> Class
https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.search.models.documentsearchresult-1?view=azure-dotnet
SearchResults<T> Class
https://docs.microsoft.com/en-us/dotnet/api/azure.search.documents.models.searchresults-1?view=azure-dotnet
我似乎无法在网上找到任何相关文档,因为它相对较新,但欢迎提出任何想法或建议。
谢谢。
解决方法
我们所有用于 .NET 匹配包名称 Azure.* 的 Azure SDK 像 Azure.Search.Documents 都可以使用与 here 所示相同的原则进行模拟。对于像 SearchResults<T>
这样的纯响应对象,我们创建 model factories 以便您可以创建它们进行测试。通常,除了测试之外,创建它们没有其他预期目的。
使用最小起订量,例如:
// Arrange
var mockResponse = new Mock<Response>();
var mockResults = SearchModelFactory.SearchResults<Model>(new[]
{
SearchModelFactory.SearchResult<Model>(new Model { Name = "a" },1.0),SearchModelFactory.SearchResult<Model>(new Model { Name = "b" },0.9),},2,rawResponse: response.Object);
var mockClient = new Mock<SearchClient>();
mockClient.Setup(m => m.Search<Model>(It.IsAny<string>(),It.IsAny<SearchOptions>(),default))
.Returns(Response.FromValue(mockResults,mockResponse.Object));
// Act
var response = mockClient.Object.Search<Model>("anything");
// Assert
Assert.AreEqual(2,response.Value.TotalCount);
有关其他想法,请参阅 more mocking samples。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。