38

私のテストには、現在次のような行があります。

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

"apple"パラメータにとの両方が含まれているかどうかを確認するように変更したいと思います"banana"。これについてどうすればいいですか?

4

4 に答える 4

42

Mockito.matches(String)たとえば、次のように使用します。

Mockito.verify(mockMyObject).
  myMethod(
    Mockito.matches("(.*apple.*banana.*)|(.*banana.*apple.*)"
  )
);
于 2010-10-15T08:28:00.523 に答える
20

Java 8 および Mockito 2.1.0 以降、次のように Streams を使用できます。

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

したがって、読みやすさが向上します

于 2019-02-19T16:25:40.343 に答える
15

最も簡単な解決策は、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"));
于 2014-12-05T10:15:36.097 に答える