Je teste un Spring Boot Service, et il y a une fonction assez étrange qui doit être testée. J'ai fait un test qui fonctionne avec succès, mais je n'obtiens pas beaucoup de couverture. Voici une fonction que je teste:
protected String setQueryListField(List<String> model, String fieldName) {
String query = "";
if (model.contains("is blank") && model.size() > 1) {
for (String value: model) {
if (value.equals("is blank")) {
query = query.concat(" AND (" + fieldName + " = null");
} else if (model.size() == 2) {
query = query.concat(" OR " + fieldName + " CONTAINS('" + value + "'))");
} else {
if (model.indexOf(value) == 1) {
query = query.concat(" OR " + fieldName + " CONTAINS('" + value + "', ");
} else if ((model.indexOf(value) + 1) == model.size()) {
query = query.concat("'" + value + "'))");
} else {
query = query.concat("'" + value + "', ");
}
}
}
} else if (model.contains("is blank") && model.size() == 1) {
query = query.concat(" AND " + fieldName + " = null");
} else {
query = query.concat(" AND " + fieldName + " CONTAINS('" + String.join("','", model) + "')");
}
return query;
}
Et voici un test que j'ai écrit. Il fonctionne avec succès, comme je l'ai dit, mais j'aimerais avoir plus de couverture. Avez-vous des suggestions?
@Test
@DisplayName("setQueryListField Test")
void setQueryListField() {
List<String> stringList = new ArrayList<>();
stringList.add("is blank");
VaultService vaultService = Mockito.spy(vaultServiceTest);
doReturn("", "").when(vaultService).setQueryListField(stringList, "field__name");
String response = vaultService.setQueryListField(stringList, "field__name");
System.out.println(response);
stringList.add("test");
String secondResponse = vaultService.setQueryListField(stringList, "external__c");
System.out.println(secondResponse);
}
Solution du problème
Vous ne couvrez que ce qui suit si bloc
else if (model.contains("is blank") && model.size() == 1) {
query = query.concat(" AND " + fieldName + " = null");
}
Si vous avez besoin de plus de couverture, vous devez essayer avec d'autres entrées afin qu'elles couvrent également d'autres branches. Par exemple, avec model.size() > 1.
De plus, les lignes suivantes ne sont pas op car elles se moquent de la même fonction que vous essayez de tester.
VaultService vaultService = Mockito.spy(vaultServiceTest);
doReturn("", "").when(vaultService).setQueryListField(stringList, "field__name");
String response = vaultService.setQueryListField(stringList, "field__name");
Aucun commentaire:
Enregistrer un commentaire