Подтвердить что ты не робот

Как проверить, содержит ли параметр две подстроки с использованием Mockito?

У меня есть строка в моем тесте, которая в настоящее время выглядит:

Mockito.verify(mockMyObject).myMethod(Mockito.contains("apple"));

Я хотел бы изменить его, чтобы проверить, содержит ли параметр "apple" и "banana". Как я могу это сделать?

4b9b3361

Ответ 1

Просто используйте Mockito.matches(String), например:

Mockito.verify(mockMyObject).
  myMethod(
    Mockito.matches("(.*apple.*banana.*)|(.*banana.*apple.*)"
  )
);

Ответ 2

Я думаю, что самым простым решением является вызов функции verify() несколько раз:

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"));

Ответ 4

 Mockito.verify(mockMyObject)
     .myMethod(Mockito.argThat(s -> 
         s.contains("apple") && s.contains("banana"));

Ответ 5

Возможно, это больше не актуально, но я нашел другой способ сделать это, следуя ответу Торстена и этому другому ответу. В моем случае я использовал Hamcrest Matchers

Mockito.verify(mockMyObject).myMethod(
   Mockito.argThat(Matchers.allOf(
      Matchers.containsString("apple"),
      Matchers.containsString("banana"))));