diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java index d38e31c3efb..bcc47e2b491 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java @@ -372,6 +372,10 @@ public abstract class AbstractMockHttpServletRequestBuilder new ArrayList<>()); + return self(); + } addToMultiValueMap(this.parameters, name, values); return self(); } @@ -821,11 +825,8 @@ public abstract class AbstractMockHttpServletRequestBuilder { - for (String value : values) { - request.addParameter(name, value); - } - }); + this.parameters.forEach((name, values) -> + request.setParameter(name, values.toArray(new String[0]))); if (!this.formFields.isEmpty()) { if (this.content != null && this.content.length > 0) { diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java index a180878c4e2..f62cce7c551 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java @@ -263,6 +263,16 @@ class MockHttpServletRequestBuilderTests { assertThat(request.getQueryString()).isEqualTo("foo=bar&foo=baz"); } + @Test // gh-35210 + void queryParameterWithoutValues() { + this.builder = new MockHttpServletRequestBuilder(GET).uri("/"); + this.builder.queryParam("foo"); + MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); + + assertThat(request.getQueryString()).isEqualTo("foo"); + assertThat(request.getParameterMap().get("foo")).containsExactly(); + } + @Test void queryParameterMap() { this.builder = new MockHttpServletRequestBuilder(GET).uri("/");