无法模拟方法响应

我想对这个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");

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

c349534161 回答:无法模拟方法响应

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

参阅https://www.baeldung.com/bdd-mockito

,

似乎没有模拟RiskFilterService,在测试类中,您必须使用@Mock注释RiskFilterService,使用@InjectMocks测试该类,并确保您初始化所有模拟,例如https://www.baeldung.com/mockito-junit-5-extension和{{3 }}

本文链接:https://www.f2er.com/3140662.html

大家都在问