2014-06-28 14 views
6

Il semplice caso di test riportato di seguito non riesce con un'eccezione.Uso non valido dei parametri di confronto

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 2 recorded:

io non sono sicuro di ciò che è sbagliato

@Test 
public void testGetStringTest(){ 

    final long testId = 1; 
    String dlrBAC = null; 
    NamedParameterJdbcTemplate jdbcTemplate = mock(NamedParameterJdbcTemplate.class); 
    when(this.dao.getNamedParameterJdbcTemplate()).thenReturn(jdbcTemplate); 
    when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class 
         )).thenReturn("Test"); 
    dlrBAC = dao.getStringTest(testId); 
    assertNotNull(dlrBAC); 

} 

risposta

17

Mockito richiede sia di utilizzare solo valori grezzi o matchers solo quando lo sradicamento di una chiamata di metodo. L'eccezione completa (non pubblicata da te qui) sicuramente spiega tutto.

semplice cambiamento della linea:

when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class 
         )).thenReturn("Test"); 

a

when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), eq(String.class) 
         )).thenReturn("Test"); 

e dovrebbe funzionare.

+0

add 'import org.mockito.Mockito statica. *;' – macias

+1

sopra cambiamento dà errore di compilazione tempo come "Il metodo eq (Class ) non è definito per il tipo di classe di test – Anwar

+0

aggiungere l'importazione statica che ho appena citato – macias

Problemi correlati