为 LoggingEvent 返回 False 到 getFormattedMessage

Returning False to getFormattedMessage for LoggingEvent

我正在使用 Appender class 的 mockAppender 方法,并且我正在尝试弄清楚如何使以下代码片段 return 如果未记录以下文本,或者 .doAppend根本没有被调用。

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

如果我理解这个问题,只需 return 相反:

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

谢谢。我也想出了另一种方法。在验证方法上使用附加参数:

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