如何在Groovy测试中验证Spring rest调用中Reactor上下文值

rryofs0p  于 2022-11-01  发布在  Spring
关注(0)|答案(1)|浏览(159)

请帮助了解如何在Groovy测试中获取Reactor上下文值

private Mono<PersonDetail> getMemberDetailsWithName(String studNumber, PersonDetail detail) {
        Set<StudError> errors = new HashSet<>();
        return coreCustomerIndividualNameClient.getStudName(studNumber)
                .map(nameResponse -> {
                    detail.setName(mapper.map(nameResponse));
                    return detail; })
                .onErrorResume(e -> {
                    errors.addAll(e);
                    return Mono.just(detail);
                })
                .handle((studDetail, sink) -> {
                    StudContext studAggCtx = sink.currentContext().get(StudContext.CONTEXT_KEY);
                    studAggCtx.getErrors().addAll(errors);
                    sink.next(studDetail);
                });
    }

我是在嘲弄,

.getStudName(studNumber) return Error.

我需要检查上下文是否添加了错误,如何在StepVerifier.create中验证此错误
通过reactor.util.context以下面的方式创建的上下文

.subscriberContext(Context.of(StudContext.CONTEXT_KEY,
                            new StudContext(headers, timeoutMillis, false)))
                    .collectList().block();
k0pti3hp

k0pti3hp1#

可以使用expectAccessibleContext方法来访问ContextExpectations方法,然后使用这些方法AssertContext的状态。

示例

Mono<Integer> mono = Mono.just(1)
                .subscriberContext(Context.of("key", "value"));

        StepVerifier.create(mono)
                .expectAccessibleContext()
                .contains("key", "value")
                .then()
                .expectNext(1)
                .verifyComplete();

预期可访问上下文文档

相关问题