¿Cómo comprobar si un parámetro contiene dos subseries usando Mockito?
-
30-09-2019 - |
Pregunta
Tengo una línea en mi prueba que se ve actualmente como:
Mockito.verify(mockMyObject).myMethod(Mockito.contains("apple"));
Me gustaría modificarlo para comprobar si el parámetro contiene tanto "apple"
y "banana"
. ¿Cómo iba a hacerlo?
Solución
Sólo Mockito.matches(String)
uso, por ejemplo:
Mockito.verify(mockMyObject).
myMethod(
Mockito.matches("(.*apple.*banana.*)|(.*banana.*apple.*)"
)
);
Otros consejos
Creo que la solución más fácil es llamar al verificar () varias veces:
verify(emailService).sendHtmlMail(anyString(), eq(REPORT_TITLE), contains("Client response31"));
verify(emailService).sendHtmlMail(anyString(), eq(REPORT_TITLE), contains("Client response40"));
verify(emailService, never()).sendHtmlMail(anyString(), anyString(), contains("Client response30"));
Mockito.verify(mockMyObject)
.myMethod(Mockito.argThat(s ->
s.contains("apple") && s.contains("banana"));
Tal vez esto ya no es relevante pero he encontrado otra manera de hacerlo, Torsten siguiente respuesta y esta otra respuesta . En mi caso he usado Hamcrest comparadores
Mockito.verify(mockMyObject).myMethod(
Mockito.argThat(Matchers.allOf(
Matchers.containsString("apple"),
Matchers.containsString("banana"))));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow