How to check if a parameter contains two substrings using Mockito?
-
30-09-2019 - |
Question
I have a line in my test that currently looks like:
Mockito.verify(mockMyObject).myMethod(Mockito.contains("apple"));
I would like to modify it to check if the parameter contains both "apple"
and "banana"
. How would I go about this?
Solution
Just use Mockito.matches(String)
, for example:
Mockito.verify(mockMyObject).
myMethod(
Mockito.matches("(.*apple.*banana.*)|(.*banana.*apple.*)"
)
);
OTHER TIPS
I think the easiest solution is to call the verify() multiple times:
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"));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow