如何在项目反应器中验证使用StepVerifier引发的异常

时间:2020-02-18 21:37:38

标签: spring-webflux project-reactor reactive

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

1 个答案:

答案 0 :(得分:1)

在大多数情况下,如果将用户提供的引发异常的代码作为lambda提供,则可以将异常转换为onError。但是在这里,您直接抛出主线程,这样就不会发生