我正在使用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");
}
}));
答案 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");
}
}));