微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Azure.Search.Documents v11.2.0

如何解决在 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 举报,一经查实,本站将立刻删除。