diff --git a/spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt b/spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt index d00d9fe6c9..3929811446 100644 --- a/spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt +++ b/spring-test/src/main/kotlin/org/springframework/test/web/servlet/MockHttpServletRequestDsl.kt @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -115,6 +115,19 @@ open class MockHttpServletRequestDsl internal constructor (private val builder: */ var params: MultiValueMap? = null + /** + * @since 6.1.5 + * @see [MockHttpServletRequestBuilder.queryParam] + */ + fun queryParam(name: String, vararg values: String) { + builder.queryParam(name, *values) + } + + /** + * @see [MockHttpServletRequestBuilder.queryParams] + */ + var queryParams: MultiValueMap? = null + /** * @see [MockHttpServletRequestBuilder.cookie] */ @@ -200,6 +213,7 @@ open class MockHttpServletRequestDsl internal constructor (private val builder: accept?.also { builder.accept(it) } contentType?.also { builder.contentType(it) } params?.also { builder.params(it) } + queryParams?.also { builder.queryParams(it) } sessionAttrs?.also { builder.sessionAttrs(it) } flashAttrs?.also { builder.flashAttrs(it) } session?.also { builder.session(it) } diff --git a/spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt b/spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt index 36f8f32f14..eea4afe9cf 100644 --- a/spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt +++ b/spring-test/src/test/kotlin/org/springframework/test/web/servlet/MockMvcExtensionsTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -219,6 +219,16 @@ class MockMvcExtensionsTests { "Content type expected: but was:") } + @Test + fun queryParameter() { + val result = mockMvc.get("/") { + queryParam("foo", "bar") + queryParam("foo", "baz") + }.andReturn() + assertThat(result.request.parameterMap["foo"]).containsExactly("bar", "baz") + assertThat(result.request.queryString).isEqualTo("foo=bar&foo=baz") + } + @RestController private class PersonController {