Нашел ответ.
В WebTestClient есть метод mutateWith , в котором вы можете передать WebTestClientConfigurer .
Создав пользовательский WebTestClientConfigurer, можно добавить атрибуты сеанса.
public class SessionMutator implements WebTestClientConfigurer {
private static Map<String, Object> sessionMap;
private SessionMutator(final Map<String, Object> sessionMap) {
this.sessionMap = sessionMap;
}
public static SessionMutator sessionMutator(final Map<String, Object> sessionMap) {
return new SessionMutator(sessionMap);
}
@Override
public void afterConfigurerAdded(final WebTestClient.Builder builder,
final WebHttpHandlerBuilder httpHandlerBuilder,
final ClientHttpConnector connector) {
final SessionMutatorFilter sessionMutatorFilter = new SessionMutatorFilter();
httpHandlerBuilder.filters(filters -> filters.add(0, sessionMutatorFilter));
}
public static ImmutableMap.Builder<String, Object> sessionBuilder() {
return new ImmutableMap.Builder<String, Object>();
}
private static class SessionMutatorFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain webFilterChain) {
return exchange.getSession()
.doOnNext(webSession -> webSession.getAttributes().putAll(sessionMap))
.then(webFilterChain.filter(exchange));
}
}
}
Тогда в @WebFluxTest можно сделать следующее:
webTestClient.mutateWith(sessionMutator(sessionBuilder().put("sessionKey", "sessionValue").build()))