栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ElasticSearch NEST 5.6.1查询单元测试

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ElasticSearch NEST 5.6.1查询单元测试

最好的方法是使用

InMemoryConnection
捕获请求字节并将其与期望的JSON比较。这就是单元测试NEST所做的。就像是

private static void Main(){    var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));    var connectionSettings = new ConnectionSettings(pool, new InMemoryConnection())        .DefaultIndex("default")        .DisableDirectStreaming();    var client = new ElasticClient(connectionSettings);    // Act    var searchResponse = client.Search<Question>(s => s       .Query(q => (q         .Match(m => m    .Field(f => f.Title)    .Query("Kibana")         ) || q         .Match(m => m    .Field(f => f.Title)    .Query("Elasticsearch")    .Boost(2)         )) && +q         .Range(t => t    .Field(f => f.Score)    .GreaterThan(0)         )       )    );    var actual = searchResponse.RequestJson();    var expected = new     {        query = new { @bool = new {     must = new object[] {         new {  @bool = new {      should = new object[] {          new {   match = new {       title = new {query = "Kibana"       }   }          },          new {   match = new {       title = new {query = "Elasticsearch",boost = 2d       }   }          }      },  }         },         new {  @bool = new {      filter = new [] {          new {   range = new {       score = new {gt = 0d       }   }          }      }  }         }     } }        }    };    // Assert    Console.WriteLine(JObject.DeepEquals(JToken.FromObject(expected), JToken.Parse(actual)));}public static class Extensions{    public static string RequestJson(this IResponse response) =>        Encoding.UTF8.GetString(response.ApiCall.RequestBodyInBytes);}

我为预期的JSON使用了匿名类型,因为它比转义的JSON字符串更容易使用。

需要注意的一件事是,即使JSON对象中存在重复的对象键(只要最后一个键/值都匹配),Json.NET

JObject.DeepEquals(...)
也会返回
true
。如果仅序列化NEST搜索,您不太可能会遇到某些事情,但是需要注意。

如果您要进行许多测试检查序列化,则需要创建一个实例

ConnectionSettings
并与所有人共享,以便可以利用其中的内部缓存,并且测试将比实例化新实例更快。在每个测试中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号