java - 无法模拟方法响应

标签 java spring spring-boot junit junit5

我想模拟此 SQL 查询的结果:

   public List<RiskFilters> findRiskFiltersByTerminalIdAndType(int terminal_id, String filter_class) {
        String hql = "....";  
        TypedQuery<RiskFilters> query = entityManager.createQuery(hql, RiskFilters.class)....;
        List<RiskFilters> riskFilters = query.getResultList();
        return riskFilters;
    }

我尝试了这个模型配置:

List<RiskFilters> riskFiltersList = new ArrayList<RiskFilters>();
        riskFiltersList.add(new RiskFilters()); 

        when(riskFilterService.findRiskFiltersByTerminalIdAndType(anyInt(), anyString())).thenReturn(riskFiltersList);

但我在这里得到 NPE:

List<RiskFilters> filter_list = riskFilterService.findRiskFiltersByTerminalIdAndType(11, "BinCountryCheckFilter");

看起来模拟的参数不正确。您知道如何正确实现吗?

最佳答案

我认为需要given(...).willReturn(...)

引用https://www.baeldung.com/bdd-mockito

关于java - 无法模拟方法响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759433/

相关文章:

java - 使用 Spring Boot RestController 下载多个 pdf 文件

java - 如何在android中创建自定义数据绑定(bind)? (安卓工作室)

Java 对 Excel 的多个列表进行排序

java - 从表和连接表中选择部分列 Criteria API

java - 将 Elasticsearch 与 Spring Boot 结合使用时出错

java - PropertyEditorSupport 中的 getAsText() 何时被调用或调用

java - 使用正则表达式codingBat splitThousands(以及单元测试方法)

java - Java 异常字符串比较

java - 创建 bean 时出错 - 在服务中注入(inject)配置类不起作用

java - 如果不使用方法名称生成查询,Spring Data 的好处是什么?