模拟弹性搜索嵌套存储桶



>我正在尝试使用以下结构模拟 elasticsearch 嵌套聚合对象。我按照附加链接中的说明做了一些事情,但无法为嵌套对象执行此操作: 模拟弹性搜索响应 in.Net

这是我一直在嘲笑的真正弹性对象。

var obj= new AggregationDictionary
{
{
"key1",new TermsAggregation("key1")
{
Field="1234",                         
Aggregations = new AggregationDictionary
{
"top",new TopHitsAggregation("top")
{
Size =10
}
}
}
}
}
};

在尝试模拟 Elasticsearch 对象时遇到困难之后,我想出了以下解决方案:

  1. 使用内存连接

    Elasticsearch(使用nest客户端(文档将教你如何提前"注入"你想要的响应。现在,您可以将响应映射到类型安全对象,而无需创建与 Elasticsearch 的连接。我建议在集成测试而不是单元测试中使用此技术。

  2. 对于单元测试,最好的选择是用接口抽象你的服务层,并完全忽略Elasticsearch引擎。

    只需使用模拟对象覆盖服务方法即可。我使用"最小起订量"并响应您想要的任何内容,例如:

    mockObj= new Mock<IClientRepository>()
    mockObj.Setup(x => x.GetData()).Return("put your response here");
    

最新更新