Class MockServerHttpResponse
- java.lang.Object
- org.springframework.http.server.reactive.AbstractServerHttpResponse
- org.springframework.mock.http.server.reactive.MockServerHttpResponse
- All Implemented Interfaces:
HttpMessage
,ReactiveHttpOutputMessage
,ServerHttpResponse
public class MockServerHttpResponse extends AbstractServerHttpResponse
Mock extension ofAbstractServerHttpResponse
for use in tests without an actual server.By default response content is consumed in full upon writing and cached for subsequent access, however it is also possible to set a custom
writeHandler
.- Since:
- 5.0
- Author:
- Rossen Stoyanchev
Field Summary
Fields inherited from class org.springframework.http.server.reactive.AbstractServerHttpResponse
logger
Constructor Summary
Constructors Constructor Description MockServerHttpResponse()
MockServerHttpResponse(DataBufferFactory dataBufferFactory)
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
applyCookies()
Add cookies fromAbstractServerHttpResponse.getHeaders()
to the underlying response.protected void
applyHeaders()
Invoked when the response is getting committed allowing sub-classes to make apply header values to the underlying response.protected void
applyStatusCode()
Write the status code to the underlying response.reactor.core.publisher.Flux<DataBuffer>
getBody()
Return the response body or an error stream if the body was not set.reactor.core.publisher.Mono<String>
getBodyAsString()
Aggregate response data and convert to a String using the "Content-Type" charset or "UTF-8" by default.<T> T
getNativeResponse()
Return the underlying server response.reactor.core.publisher.Mono<Void>
setComplete()
Indicate that message handling is complete, allowing for any cleanup or end-of-processing tasks to be performed such as applying header changes made viaHttpMessage.getHeaders()
to the underlying HTTP message (if not applied already).void
setWriteHandler(Function<reactor.core.publisher.Flux<DataBuffer>,reactor.core.publisher.Mono<Void>> writeHandler)
Configure a custom handler to consume the response body.protected reactor.core.publisher.Mono<Void>
writeAndFlushWithInternal(org.reactivestreams.Publisher<? extends org.reactivestreams.Publisher<? extends DataBuffer>> body)
Write to the underlying the response, and flush after eachPublisher<DataBuffer>
.protected reactor.core.publisher.Mono<Void>
writeWithInternal(org.reactivestreams.Publisher<? extends DataBuffer> body)
Write to the underlying the response.Methods inherited from class org.springframework.http.server.reactive.AbstractServerHttpResponse
addCookie, beforeCommit, bufferFactory, doCommit, doCommit, getCookies, getHeaders, getRawStatusCode, getStatusCode, getStatusCodeValue, isCommitted, setRawStatusCode, setStatusCode, setStatusCodeValue, writeAndFlushWith, writeWith
Constructor Detail
MockServerHttpResponse
public MockServerHttpResponse()
MockServerHttpResponse
public MockServerHttpResponse(DataBufferFactory dataBufferFactory)
Method Detail
setWriteHandler
public void setWriteHandler(Function<reactor.core.publisher.Flux<DataBuffer>,reactor.core.publisher.Mono<Void>> writeHandler)
Configure a custom handler to consume the response body.By default, response body content is consumed in full and cached for subsequent access in tests. Use this option to take control over how the response body is consumed.
- Parameters:
writeHandler
- the write handler to use returningMono<Void>
when the body has been "written" (i.e. consumed).
getNativeResponse
public <T> T getNativeResponse()
Description copied from class:AbstractServerHttpResponse
Return the underlying server response.Note: This is exposed mainly for internal framework use such as WebSocket upgrades in the spring-webflux module.
- Specified by:
getNativeResponse
in classAbstractServerHttpResponse
applyStatusCode
protected void applyStatusCode()
Description copied from class:AbstractServerHttpResponse
Write the status code to the underlying response. This method is called once only.- Specified by:
applyStatusCode
in classAbstractServerHttpResponse
applyHeaders
protected void applyHeaders()
Description copied from class:AbstractServerHttpResponse
Invoked when the response is getting committed allowing sub-classes to make apply header values to the underlying response.Note that most sub-classes use an
HttpHeaders
instance that wraps an adapter to the native response headers such that changes are propagated to the underlying response on the go. That means this callback is typically not used other than for specialized updates such as setting the contentType or characterEncoding fields in a Servlet response.- Specified by:
applyHeaders
in classAbstractServerHttpResponse
applyCookies
protected void applyCookies()
Description copied from class:AbstractServerHttpResponse
Add cookies fromAbstractServerHttpResponse.getHeaders()
to the underlying response. This method is called once only.- Specified by:
applyCookies
in classAbstractServerHttpResponse
writeWithInternal
protected reactor.core.publisher.Mono<Void> writeWithInternal(org.reactivestreams.Publisher<? extends DataBuffer> body)
Description copied from class:AbstractServerHttpResponse
Write to the underlying the response.- Specified by:
writeWithInternal
in classAbstractServerHttpResponse
- Parameters:
body
- the publisher to write with
writeAndFlushWithInternal
protected reactor.core.publisher.Mono<Void> writeAndFlushWithInternal(org.reactivestreams.Publisher<? extends org.reactivestreams.Publisher<? extends DataBuffer>> body)
Description copied from class:AbstractServerHttpResponse
Write to the underlying the response, and flush after eachPublisher<DataBuffer>
.- Specified by:
writeAndFlushWithInternal
in classAbstractServerHttpResponse
- Parameters:
body
- the publisher to write and flush with
setComplete
public reactor.core.publisher.Mono<Void> setComplete()
Description copied from interface:ReactiveHttpOutputMessage
Indicate that message handling is complete, allowing for any cleanup or end-of-processing tasks to be performed such as applying header changes made viaHttpMessage.getHeaders()
to the underlying HTTP message (if not applied already).This method should be automatically invoked at the end of message processing so typically applications should not have to invoke it. If invoked multiple times it should have no side effects.
- Specified by:
setComplete
in interfaceReactiveHttpOutputMessage
- Overrides:
setComplete
in classAbstractServerHttpResponse
- Returns:
- a
Mono
that indicates completion or error
getBody
public reactor.core.publisher.Flux<DataBuffer> getBody()
Return the response body or an error stream if the body was not set.
getBodyAsString
public reactor.core.publisher.Mono<String> getBodyAsString()
Aggregate response data and convert to a String using the "Content-Type" charset or "UTF-8" by default.