Search code examples
javajunitmockitojunit4matcher

Mockito not allowing Matchers.any() with Integer.class


I am trying to unit test this method:

/**
     * finds all widget descriptions containing specified text
     * @param searchText
     * @return
     */
    @Transactional
    public List<Integer> returnWidgetIdsFromSearchWord(String searchText){
        List<Integer> widgetIds = new ArrayList<Integer>();
        MapSqlParameterSource args = new MapSqlParameterSource();

        try{
            widgetIds = (List<Integer>) jdbt.queryForList("SELECT idwidgets FROM descriptions "
                    + "WHERE descriptiontext LIKE '%"+ searchText + "%'", args, Integer.class);
        }catch(Exception e){

        }

        return widgetIds;
    }

with this JUnit test:

@Test
    public void testReturnWidgetIdsFromSearchWord(){
        List<Integer> widgetIds = null;

        when(jdbt.queryForList(Matchers.anyString(), 
                Matchers.any(MapSqlParameterSource.class),
                 Matchers.any(Integer.class))).thenReturn(idList);

        widgetIds = (List<Integer>) dDao.returnWidgetIdsFromSearchWord("someText");

        assertEquals(widgetIds, idList);
    }

I have tried just use Integer.class without the Matcher - no luck because then it complains about needing 3 matchers. Any suggestions? And thanks


Solution

  • I changed my test to this and it worked:

    @Test
        public void testReturnWidgetIdsFromSearchWord(){
            List<Integer> widgetIds = null;
            String searchText = "someText";
    
            /*when(jdbt.queryForList("SELECT idwidgets FROM descriptions "
                    + "WHERE descriptiontext LIKE '%"+ searchText + "%'", 
                    args, Integer.class)).thenReturn(idList);*/
    
            when(jdbt.queryForList(Matchers.anyString(), Matchers.any(MapSqlParameterSource.class), 
                    (Class<Integer>) Matchers.anyVararg())).thenReturn(idList);
    
            widgetIds = (List<Integer>) dDao.returnWidgetIdsFromSearchWord(searchText);
    
            System.out.println(widgetIds.size());
    
            assertEquals(widgetIds, idList);
        }
    

    Thanks for the help