@Factory
private static DiagnosingMatcher<Object> translateTo(HttpStatus status) {
return new DiagnosingMatcher<Object>() {
private static final String EXCEPTION = "EXCEPTION";
@Override
public void describeTo(final Description description) {
description.appendText("does not translate to ").appendText(status.toString());
}
@SuppressWarnings("unchecked")
protected boolean matches(final Object item, final Description mismatch) {
if (item instanceof Class) {
if (((Class) item).getClass().isInstance(Throwable.class)) {
Class<? extends Throwable> type = (Class<? extends Throwable>) item;
try {
Throwable exception = type.getConstructor(String.class).newInstance(EXCEPTION);
Mono.just(exception).transform(ThrowableTranslator::translate).subscribe(translator -> {
assertThat(translator.getMessage(), is(EXCEPTION));
assertThat(translator.getHttpStatus(), is(status));
});
} catch (InstantiationException | IllegalAccessException |
InvocationTargetException | NoSuchMethodException cause) {
throw new AssertionError("This exception class has not constructor with a String", cause);
}
return true;
}
}
mismatch.appendText(item.toString());
return false;
}
};
}
ThrowableTranslatorTest.java 文件源码
java
阅读 21
收藏 0
点赞 0
评论 0
项目:reactive-ms-example
作者:
评论列表
文章目录