NEST 2.0 和 ElasticSearch 2.0 无法模拟“全部返回”查询

本文关键字:返回 全部 全部返回 查询 ElasticSearch NEST 模拟 | 更新日期: 2023-09-27 18:37:07

这是我想要模拟的查询:

  var readRecords = elastic.Search<GroupRecord>(s => s
        .Index(indexName)
        .Query(q => q.
            QueryString(qs => qs.Query("*"))));

这是实际的最小起订量

var groupResp = new Mock<ISearchResponse<GroupRecord>>();
var groupRecords = new[]
{
     new GroupRecord
     {
          GroupName = "blablabla"
     }
};
groupResp.SetupGet(x => x.Documents).Returns(groupRecords);
ElasticClientMock.Setup(ec => ec.Search(It.IsAny<Func<SearchDescriptor<GroupRecord>, SearchDescriptor<GroupRecord>>>())).Returns(groupResp.Object);

在 NEST1.0 和 ElasticSearch1.0 上,查询返回所有 (1) 个文档。在新的NEST2.0和ElasticSearch2.0上,我的readRecordsnull

你知道为什么吗?

编辑

在真实环境中(无模拟),查询按预期返回所有文档

NEST 2.0 和 ElasticSearch 2.0 无法模拟“全部返回”查询

我认为问题出在设置中。 以下行:

ElasticClientMock.Setup(ec => ec.Search(It.IsAny<Func<SearchDescriptor<GroupRecord>, SearchDescriptor<GroupRecord>>>())).Returns(groupResp.Object);

Mock 正在寻找一个 Func<>其中包含两个SearchDescriptor对象,它在 NEST1 中。 现在,我认为搜索的签名是一个 Func<>有一个SearchDescriptor和一个ISearchRequest