【问题标题】:NEST 2.0 and ElasticSearch 2.0 unable to mock a "return all" queryNEST 2.0 和 ElasticSearch 2.0 无法模拟“全部返回”查询
【发布时间】:2016-03-02 16:52:18
【问题描述】:

这是我要模拟的查询:

  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

你知道为什么吗?

编辑

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

【问题讨论】:

  • 能否包含Search方法的签名?

标签: c# elasticsearch mocking moq nest


【解决方案1】:

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

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

Mock 正在寻找具有两个 SearchDescriptor 对象的 Func,它位于 NEST1 中。现在,我认为 Search 的签名是一个 Func,其中一个 SearchDescriptor 和一个 ISearchRequest

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多