提交 9f242fac 编写于 作者: S Sebastien Deleuze

Add RSocketRequester retrieveAndAwaitOrNull extension

Closes gh-23874
上级 0d8aa854
......@@ -112,6 +112,15 @@ suspend fun RSocketRequester.RequestSpec.sendAndAwait() {
suspend inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveAndAwait(): T =
retrieveMono(object : ParameterizedTypeReference<T>() {}).awaitSingle()
/**
* Nullable coroutines variant of [RSocketRequester.RequestSpec.retrieveMono].
*
* @author Sebastien Deleuze
* @since 5.2.1
*/
suspend inline fun <reified T : Any> RSocketRequester.RequestSpec.retrieveAndAwaitOrNull(): T? =
retrieveMono(object : ParameterizedTypeReference<T>() {}).awaitFirstOrNull()
/**
* Coroutines variant of [RSocketRequester.RequestSpec.retrieveFlux].
*
......
......@@ -120,6 +120,15 @@ class RSocketRequesterExtensionsTests {
}
}
@Test
fun retrieveAndAwaitOrNull() {
val requestSpec = mockk<RSocketRequester.RequestSpec>()
every { requestSpec.retrieveMono(match<ParameterizedTypeReference<*>>(stringTypeRefMatcher)) } returns Mono.empty()
runBlocking {
assertThat(requestSpec.retrieveAndAwaitOrNull<String>()).isNull()
}
}
@Test
fun retrieveFlow() {
val requestSpec = mockk<RSocketRequester.RequestSpec>()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册