unit-testing - 使用 mockito 在 Elastic 中模拟聚合
问题描述
我有一个从 searchResponse 映射产品的方法。映射时我使用全局、过滤器和嵌套
Global globalAggregation = searchResponse.getAggregations().get(FACETS);
Filter filterAgg = globalAggregation.getAggregations().get(GENERAL_AGGREGATION);
Nested agg = filterAgg.getAggregations().get(facetAttribute);
我可以使用 stub json 为上述代码编写单元测试,效果很好,但维护它变得很困难。有没有更好的方法来为这样的场景编写单元测试用例,我们可以直接模拟它们。
这是我尝试过的。
SearchResponse searchResponse = mock(SearchResponse.class);
Aggregations aggregations = mock(Aggregations.class);
Global global= mock(Global.class);
when(searchResponse.getAggregations().get("facet")).thenReturn(global);
最后一行不起作用,有没有更好的处理方法?
解决方案
我认为您需要模拟searchResponse.getAggregations()
方法调用。你可以试试这样的东西吗?
when(searchResponse.getAggregations()).thenReturn(aggregations);
when(aggregations.get("facet")).thenReturn(global)
推荐阅读
- excel - 如何跳过 SQL Query 中的第一行数据?
- c++ - 如何在 cpp 中解析此文件?
- c# - C# ToList 或列表添加会产生错误的结果
- git - 如何读取 git remote -v 的状态
- javascript - 使用 Node JS 在猫鼬中存储多个文本的理想方法?
- android-recyclerview - RxAndroid 网络调用使应用程序滞后于后退导航
- node.js - SQS 和 SNS 仅在前一个用户拒绝或没有响应的情况下向用户一一发送通知
- vb.net - 是否可以在 SQLite 中选择更多语句?
- macos - React Native App Atom IDE 错误不允许创建配置文件夹
- flutter - 将项目附加/前置到 ListView