我正在为使用 ElasticSearch.NET 从 ES 读取的系统编写一些测试。该程序将搜索结果转换为不同的格式。
我想在测试中做的是使用一个大的 JSON 文件作为 ES 的模拟响应,以测试转换器是否工作。
但是,我需要为转换器创建一个有效的ISearchResponse
实例,而我发现模拟结果的唯一方法是手动创建层次结构中的每个对象,例如:
var aggregations = new AggregateDictionary(new Dictionary<string, IAggregate>
{
["my_aggregate"] = new BucketAggregate
{
Items = new List<IBucket>()
{
new DateHistogramBucket(new Dictionary<string, IAggregate>()
{
{
"key", new KeyedValueAggregate(){Value = 10, ValueAsString = "10"}
}
})
}.AsReadOnly()
}
});
searchResponse.Aggregations.Returns(info => new AggregateDictionary(aggregations));
但是,我想模拟一个更大的响应对象,而不必对其进行精确建模,因为这可能会导致无法预料的问题。
是否有某种序列化程序可用于将 JSON 对象转换为 ElasticSearch.NET 搜索响应对象,甚至是单个聚合字典?