首页 > 解决方案 > 如何在项目反应器中使用 StepVerifier 验证引发的异常

问题描述

    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 抛出异常而不是返回 Mono.error,则无法使其工作。总是建议使用 try catch 转换为 Mono/Flow,还是有更好的方法来验证这种抛出的异常?

标签: spring-webfluxproject-reactorreactive

解决方案


大多数情况下,如果用户提供的引发异常的代码以 lambda 形式提供,则异常可以转换为onError. 但是在这里你直接抛出主线程,所以这不会发生


推荐阅读