Mockito ne permettant pas de Rapprochement.() avec Integer.class
Je suis en train de l'unité de tester cette méthode:
/**
* 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;
}
avec ce test JUnit:
@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);
}
J'ai essayé tout à l'utiliser Integer.class sans le Matcher - pas de chance, car alors il se plaint d'avoir besoin de 3 de rapprochement. Toutes les suggestions? Et merci
Vous pourriez avoir besoin de le vérifier, stackoverflow.com/questions/2631596/... en raison de googler sur queryForList il taskes une Chaîne et un Objet... varargs docs.printemps.io/printemps/docs/2.5.6/api/org/springframework/jdbc/... Mais je ne sais pas de quelle version de l'interface que vous utilisez.
Est
oui, jdbt est NamedParameterJdbcTemplate et il est moquée dans le programme d'installation. La méthode originale compile et les retours attendus de la Liste
Est
jdbt
destiné à être un JdbcTemplate
? Si oui, votre code ne semble pas à compiler.oui, jdbt est NamedParameterJdbcTemplate et il est moquée dans le programme d'installation. La méthode originale compile et les retours attendus de la Liste
OriginalL'auteur eggshell | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
Ne jettent pas de
Matchers.anyVararg()
, il y a une meilleure solution.Méthode
queryForList
a la signatureainsi, au lieu de
utilisation
comme décrit dans Mockito: Vérification avec les paramètres génériques
Ne pas utiliser de code avec
anyVararg()
et de la couléeparce que cela génère avertissement
OriginalL'auteur MariuszS
Si vous avez besoin de se moquer NamedParameterJdbcTemplate#queryForList(String, SqlParameterSource, Classe) alors utilisez simplement
Est-il possible que vous n'avez pas à passer votre modèle d'objet de la DAO exemple? Trouver mon test complet de la classe ci-dessous. Il passe le test avec succès:
J'ai ajouté mon test complet de la classe. J'espère que cela aide.
OriginalL'auteur Peter Keller
J'ai changé mon test à cela et il a travaillé:
Merci pour l'aide
when
des clauses de la statique matcher les appels de méthodeOriginalL'auteur eggshell