如何在项目反应器中使用 StepVerifier 验证抛出的异常
How to verify exception thrown using StepVerifier in project reactor
def expectError() {
StepVerifier.create(readDB())
.expectError(RuntimeException.class)
.verify();
}
private Mono<String> readDB() {
// try {
return Mono.just(externalService.get())
.onErrorResume(throwable -> Mono.error(throwable));
// } catch (Exception e) {
// return Mono.error(e);
// }
}
如果 externalService.get 抛出异常而不是 return Mono.error,则无法使其工作。总是建议使用 try catch 转换为 Mono/Flow 还是有更好的方法来验证此类抛出的异常?
大多数时候,如果用户提供的抛出异常的代码作为 lambda 提供,则异常可以转换为 onError
。但是在这里你直接扔进主线程,所以不会发生
def expectError() {
StepVerifier.create(readDB())
.expectError(RuntimeException.class)
.verify();
}
private Mono<String> readDB() {
// try {
return Mono.just(externalService.get())
.onErrorResume(throwable -> Mono.error(throwable));
// } catch (Exception e) {
// return Mono.error(e);
// }
}
如果 externalService.get 抛出异常而不是 return Mono.error,则无法使其工作。总是建议使用 try catch 转换为 Mono/Flow 还是有更好的方法来验证此类抛出的异常?
大多数时候,如果用户提供的抛出异常的代码作为 lambda 提供,则异常可以转换为 onError
。但是在这里你直接扔进主线程,所以不会发生