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 ofAbstractServerHttpResponsefor 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 voidapplyCookies()Add cookies fromAbstractServerHttpResponse.getHeaders()to the underlying response.protected voidapplyHeaders()Invoked when the response is getting committed allowing sub-classes to make apply header values to the underlying response.protected voidapplyStatusCode()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> TgetNativeResponse()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).voidsetWriteHandler(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:AbstractServerHttpResponseReturn the underlying server response.Note: This is exposed mainly for internal framework use such as WebSocket upgrades in the spring-webflux module.
- Specified by:
getNativeResponsein classAbstractServerHttpResponse
applyStatusCode
protected void applyStatusCode()
Description copied from class:AbstractServerHttpResponseWrite the status code to the underlying response. This method is called once only.- Specified by:
applyStatusCodein classAbstractServerHttpResponse
applyHeaders
protected void applyHeaders()
Description copied from class:AbstractServerHttpResponseInvoked 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
HttpHeadersinstance 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:
applyHeadersin classAbstractServerHttpResponse
applyCookies
protected void applyCookies()
Description copied from class:AbstractServerHttpResponseAdd cookies fromAbstractServerHttpResponse.getHeaders()to the underlying response. This method is called once only.- Specified by:
applyCookiesin classAbstractServerHttpResponse
writeWithInternal
protected reactor.core.publisher.Mono<Void> writeWithInternal(org.reactivestreams.Publisher<? extends DataBuffer> body)
Description copied from class:AbstractServerHttpResponseWrite to the underlying the response.- Specified by:
writeWithInternalin 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:AbstractServerHttpResponseWrite to the underlying the response, and flush after eachPublisher<DataBuffer>.- Specified by:
writeAndFlushWithInternalin classAbstractServerHttpResponse- Parameters:
body- the publisher to write and flush with
setComplete
public reactor.core.publisher.Mono<Void> setComplete()
Description copied from interface:ReactiveHttpOutputMessageIndicate 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:
setCompletein interfaceReactiveHttpOutputMessage- Overrides:
setCompletein classAbstractServerHttpResponse- Returns:
- a
Monothat 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.