'How would I unit test jdbcTemplate.query that have overrides?

I have a class that uses multiple get methods the returns

 public int getCurrNum(String Name) {

    // query clearances table to return an int that represents the clearance level
    String sql = "SELECT number FROM clearances WHERE '" + Name + "' = name;";
    //String.format("SELECT number FROM clearances WHERE '%s' = name;",clearanceName);
    return jdbcTemplate.queryForObject(sql, Integer.class);
}

which I understand I can use Mockito with a statement like Mockito.when(jdbcTemplate.queryForObject(Mockito.anyString(), Mockito.eq(Integer.class))).thenReturn(1);

But that is not really testing values that are being passed in because I am just telling it to return a value I want. I want to make sure all these methods return what the parameters are specially passing in. We have a user token with user details being sent in. We also have more JdbcTemplates such as

 public List<String> getCurr(String currCountry) {

    // query alliances table to return a list of alliance tags that countain the
    // user's country tag
    String sql = "SELECT * FROM user WHERE '" + currCountry + "' = ANY(access_tags) ;";
    return jdbcTemplate.query(sql, new RowMapper<String>() {
        @Override
        public String mapRow(ResultSet rs, int rownumber) throws SQLException {
            return rs.getString(1);
        }
    });

Then the last methods combines everything and has this return statement that uses all these setters from another class.

    // return list of appropriately filtered missions
    return jdbcTemplate.query(sql, new RowMapper<Mission>() {
        @Override
        public OtherClass mapRow(ResultSet rs, int rownumber) throws SQLException {
            OtherClass m = new OtherClass();
            m.setNumber(rs.getInt(1));
            m.setName(rs.getString(2));
            m.setLastCheckinDate(rs.getString(3));
            m.setLocation(rs.getString(4));
            m.setCurrLocation(rs.getString(5));
            m.setFinalLocation(rs.getString(6));
            m.setTags(rs.getString(7));
            return m;
        }
    });
}

But I am not sure how to test these statements. Without using the Mockito.when commands, they always turn out null. We have this information in a database .xml file for the column and rows so it knows what information to grab to fill in the lists. Do I need to mock a mock db or something to test this?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source