我正在使用Spring Cloud Stream,我的应用程序的要点如下:
@StreamListener(MySink.SINK_NAME)
fun processEvents(events: Flux<Event>) {
events.flatMap { event -> toEntities(event).toFlux() }
.flatMap(myRepository::store)
.doOnError { e -> log.error("Failed to store events", e) }
.retry(3)
.subscribe()
}
其中MyRepository
的定义如下:
interface MyRepository {
fun store(entity: Entity): Mono<UpdateResult>
}
我正在尝试模拟失败,以便我可以确保重试实际工作,因此我创建了@MockBean
MyRepository
并配置模拟以首先抛出异常:< / p>
given(myRepositoryMock.store(any())).willThrow(IllegalArgumentException("expected"))
.willReturn(Mono.just(UpdateResult.acknowledged(...)))
但我似乎无法触发重试行为。我看到异常确实已被捕获并记录:
java.lang.IllegalArgumentException: expected
我做错了什么?