Я добавляю куки в ответ шлюза, используя реактивные глобальные фильтры, как:
chain.filter(exchange).then(<a mono relevant to response>)
Когда я пытаюсь проверить это с помощью спока , метод не вызывается из заглушкиMono.
Сам фильтр:
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return chain.filter(exchange)
.then(refreshCookiesMono(exchange));
}
private Mono<Void> refreshCookiesMono(ServerWebExchange exchange) {
return Mono.fromRunnable(() -> {
//interactions with *exchange* and *chain*
});
}
Этот тест проходит несмотря на 0 * _ в конце:
@Subject
CookieFilter cookieFilter = new CookieFilter(cookieHelper)
...
ServerWebExchange exchange = Mock ServerWebExchange
GatewayFilterChain chain = Mock GatewayFilterChain
Mono<Void> mono = Mock Mono
...
def "cookieFilter refreshes the cookie with a new value"() {
given:
when:
cookieFilter.filter(exchange, chain)
then:
1 * chain.filter(exchange) >> mono
0 * _
}
Но в коде, который я вызываю .then из моно, возвращенного методом .filter .
Почему не учитывается mono.then () ? Конечно, когда я пытаюсь проверить всю основную логику - спок не находит взаимодействия.