在 Azure.Search.Documents v11.2.0 中测试 SearchResults<T> Class 的方法

Ways to test SearchResults<T> Class in Azure.Search.Documents v11.2.0

我正在尝试找出一种方法来对来自 SearchResults<T> Class 的具有不同参数的搜索结果进行单元测试。

与之前包 Microsoft.Azure.Search.Data v10.1.0 中的 DocumentSearchResult<T> Class 相比,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 SDK 匹配包名称 Azure.*,例如 Azure.Search.Documents 都可以使用与 here. For pure response objects like SearchResults<T>, we create 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