无法模拟方法响应

时间:2019-11-08 02:07:28

标签: 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");

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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