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?

¿Fue útil?

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
scroll top