为LoggingEvent返回False到getFormattedMessage

时间:2017-06-19 21:11:27

标签: mockito appender

我正在使用Appender类的mockAppender方法,我正在尝试如果未记录下面的文本,或者根本没有调用.doAppend,那么如何让以下代码片段返回true。

verify(mockAppender).doAppend(argThat(new ArgumentMatcher() {
  @Override
  public boolean matches(final Object argument) {
    return ((LoggingEvent) argument).getFormattedMessage().contains(
        "Sending request to partner: "
        + "https://<URL>/hosted/api/tokenize with args");
  }
}));

2 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,只需返回反向:

return !((LogginEvent) ... etc.

正如建议一样,您可以考虑在验证中使用@Captor,然后在@Captor的值上声明:

ArgumentCaptor<LoggingEvent> argument = ArgumentCaptor.forClass(LoggingEvent.class);
// or more succinct to use a field with @Captor annotation

verify(mockAppender).doAppend(logEventCaptor);
assertFalse(logEventCaptor.getValue().contains("theTextYouWantToExclude");

答案 1 :(得分:0)

感谢。我也想到了另一种方式。在验证方法上使用其他参数:

verify(mockAppender, never()).doAppend(argThat(new ArgumentMatcher() {
  @Override
  public boolean matches(final Object argument) {
    return ((LoggingEvent) argument).getFormattedMessage().contains(
        "Sending request to partner: "
        + "https://<URL>/hosted/api/tokenize with args");
  }
}));