Class StandaloneMockMvcBuilder
- All Implemented Interfaces:
MockMvcBuilder
,ConfigurableMockMvcBuilder<StandaloneMockMvcBuilder>
MockMvcBuilder
that accepts @Controller
registrations
thus allowing full control over the instantiation and initialization of
controllers and their dependencies similar to plain unit tests, and also
making it possible to test one controller at a time.
This builder creates the minimum infrastructure required by the
DispatcherServlet
to serve requests with annotated controllers and
also provides methods for customization. The resulting configuration and
customization options are equivalent to using MVC Java config except
using builder style methods.
To configure view resolution, either select a "fixed" view to use for every
request performed (see setSingleView(View)
) or provide a list of
ViewResolver
s (see setViewResolvers(ViewResolver...)
).
- Since:
- 3.2
- Author:
- Rossen Stoyanchev
-
Constructor Summary
ModifierConstructorDescriptionprotected
StandaloneMockMvcBuilder
(Object... controllers) Protected constructor. -
Method Summary
Modifier and TypeMethodDescriptionaddInterceptors
(HandlerInterceptor... interceptors) Add interceptors mapped to all incoming requests.addMappedInterceptors
(String[] pathPatterns, HandlerInterceptor... interceptors) Add interceptors mapped to a set of path patterns.addPlaceholderValue
(String name, String value) In a standalone setup there is no support for placeholder values embedded in request mappings.extendMvcSingletons
(ServletContext servletContext) This method could be used from a sub-class to register additional Spring MVC infrastructure such as additionalHandlerMapping
,HandlerAdapter
, and others.protected WebApplicationContext
A method to obtain theWebApplicationContext
to be passed to theDispatcherServlet
.setAsyncRequestTimeout
(long timeout) Specify the timeout value for async execution.Set a ContentNegotiationManager.setControllerAdvice
(Object... controllerAdvice) Register one or moreControllerAdvice
instances to be used in tests (specifiedClass
will be turned into instance).setConversionService
(FormattingConversionService conversionService) Provide a conversion service with custom formatters and converters.setCustomArgumentResolvers
(HandlerMethodArgumentResolver... argumentResolvers) Provide custom resolvers for controller method arguments.Configure factory to create a customRequestMappingHandlerMapping
.Provide custom handlers for controller method return values.setFlashMapManager
(FlashMapManager flashMapManager) Provide a custom FlashMapManager instance.setHandlerExceptionResolvers
(List<HandlerExceptionResolver> exceptionResolvers) Set the HandlerExceptionResolver types to use as a list.setHandlerExceptionResolvers
(HandlerExceptionResolver... exceptionResolvers) Set the HandlerExceptionResolver types to use as an array.setLocaleResolver
(LocaleResolver localeResolver) Provide a LocaleResolver instance.setMessageConverters
(HttpMessageConverter<?>... messageConverters) Set the message converters to use in argument resolvers and in return value handlers, which support reading and/or writing to the body of the request and response.void
setPatternParser
(PathPatternParser parser) Enable URL path matching with parsedPathPatterns
instead of String pattern matching with aPathMatcher
.setRemoveSemicolonContent
(boolean removeSemicolonContent) Set if ";" (semicolon) content should be stripped from the request URI.setSingleView
(View view) Sets up a singleViewResolver
that always returns the provided view instance.setUseSuffixPatternMatch
(boolean useSuffixPatternMatch) Deprecated.as of 5.2.4.setUseTrailingSlashPatternMatch
(boolean useTrailingSlashPatternMatch) Whether to match to URLs irrespective of the presence of a trailing slash.setValidator
(Validator validator) Provide a customValidator
instead of the one created by default.setViewResolvers
(ViewResolver... resolvers) Set up view resolution with the givenViewResolvers
.Methods inherited from class org.springframework.test.web.servlet.setup.AbstractMockMvcBuilder
addDispatcherServletCustomizer, addFilter, addFilters, alwaysDo, alwaysExpect, apply, build, defaultRequest, defaultResponseCharacterEncoding, dispatchOptions, self
Methods inherited from class org.springframework.test.web.servlet.MockMvcBuilderSupport
createMockMvc, createMockMvc
-
Constructor Details
-
StandaloneMockMvcBuilder
Protected constructor. Not intended for direct instantiation.
-
-
Method Details
-
setControllerAdvice
Register one or moreControllerAdvice
instances to be used in tests (specifiedClass
will be turned into instance).Normally
@ControllerAdvice
are auto-detected as long as they're declared as Spring beans. However since the standalone setup does not load any Spring config, they need to be registered explicitly here instead much like controllers.- Since:
- 4.2
-
setMessageConverters
Set the message converters to use in argument resolvers and in return value handlers, which support reading and/or writing to the body of the request and response. If no message converters are added to the list, a default list of converters is added instead. -
setValidator
Provide a customValidator
instead of the one created by default. The default implementation used, assuming JSR-303 is on the classpath, isLocalValidatorFactoryBean
. -
setConversionService
Provide a conversion service with custom formatters and converters. If not set, aDefaultFormattingConversionService
is used by default. -
addInterceptors
Add interceptors mapped to all incoming requests. -
addMappedInterceptors
public StandaloneMockMvcBuilder addMappedInterceptors(@Nullable String[] pathPatterns, HandlerInterceptor... interceptors) Add interceptors mapped to a set of path patterns. -
setContentNegotiationManager
Set a ContentNegotiationManager. -
setAsyncRequestTimeout
Specify the timeout value for async execution. In Spring MVC Test, this value is used to determine how to long to wait for async execution to complete so that a test can verify the results synchronously.- Parameters:
timeout
- the timeout value in milliseconds
-
setCustomArgumentResolvers
public StandaloneMockMvcBuilder setCustomArgumentResolvers(HandlerMethodArgumentResolver... argumentResolvers) Provide custom resolvers for controller method arguments. -
setCustomReturnValueHandlers
public StandaloneMockMvcBuilder setCustomReturnValueHandlers(HandlerMethodReturnValueHandler... handlers) Provide custom handlers for controller method return values. -
setHandlerExceptionResolvers
public StandaloneMockMvcBuilder setHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) Set the HandlerExceptionResolver types to use as a list. -
setHandlerExceptionResolvers
public StandaloneMockMvcBuilder setHandlerExceptionResolvers(HandlerExceptionResolver... exceptionResolvers) Set the HandlerExceptionResolver types to use as an array. -
setViewResolvers
Set up view resolution with the givenViewResolvers
. If not set, anInternalResourceViewResolver
is used by default. -
setSingleView
Sets up a singleViewResolver
that always returns the provided view instance. This is a convenient shortcut if you need to use one View instance only -- e.g. rendering generated content (JSON, XML, Atom). -
setLocaleResolver
Provide a LocaleResolver instance. If not provided, the default one used isAcceptHeaderLocaleResolver
. -
setFlashMapManager
Provide a custom FlashMapManager instance. If not provided,SessionFlashMapManager
is used by default. -
setPatternParser
Enable URL path matching with parsedPathPatterns
instead of String pattern matching with aPathMatcher
.- Parameters:
parser
- the parser to use- Since:
- 5.3
-
setUseSuffixPatternMatch
Deprecated.as of 5.2.4. See class-level note inRequestMappingHandlerMapping
on the deprecation of path extension config options.Whether to use suffix pattern match (".*") when matching patterns to requests. If enabled a method mapped to "/users" also matches to "/users.*".The default value is
false
. -
setUseTrailingSlashPatternMatch
public StandaloneMockMvcBuilder setUseTrailingSlashPatternMatch(boolean useTrailingSlashPatternMatch) Whether to match to URLs irrespective of the presence of a trailing slash. If enabled a method mapped to "/users" also matches to "/users/".The default value is
true
. -
setRemoveSemicolonContent
Set if ";" (semicolon) content should be stripped from the request URI. The value, if provided, is in turn set onAbstractHandlerMapping.setRemoveSemicolonContent(boolean)
. -
addPlaceholderValue
In a standalone setup there is no support for placeholder values embedded in request mappings. This method allows manually provided placeholder values so they can be resolved. Alternatively consider creating a test that initializes aWebApplicationContext
.- Since:
- 4.2.8
-
setCustomHandlerMapping
public StandaloneMockMvcBuilder setCustomHandlerMapping(Supplier<RequestMappingHandlerMapping> factory) Configure factory to create a customRequestMappingHandlerMapping
.- Parameters:
factory
- the factory- Since:
- 5.0
-
initWebAppContext
Description copied from class:AbstractMockMvcBuilder
A method to obtain theWebApplicationContext
to be passed to theDispatcherServlet
. Invoked fromAbstractMockMvcBuilder.build()
before theMockMvc
instance is created.- Specified by:
initWebAppContext
in classAbstractMockMvcBuilder<StandaloneMockMvcBuilder>
-
extendMvcSingletons
This method could be used from a sub-class to register additional Spring MVC infrastructure such as additionalHandlerMapping
,HandlerAdapter
, and others.- Parameters:
servletContext
- the ServletContext- Returns:
- a map with additional MVC infrastructure object instances
- Since:
- 5.1.4
-