mockmvc未验证使用应用程序的控制器方法/x-www-form-urlencoded

3zwjbxry  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(165)

我正在为我的控制器方法编写单元测试。mockmvc正在验证所有需要请求参数或json主体的方法。但是,它不会验证使用application/x-www-form-urlencoded的控制器方法。下面是一个例子:

@RestController
@RequestMapping("/pools")
@Validated
public class PoolController {
        @PostMapping(value = "/test", consumes = "application/x-www-form-urlencoded")
        public ResponseEntity createPool(@NotBlank(message = "poolName cannot be blank") String poolName) {
            return ResponseEntity.ok().build();
        }
}

在我的单元测试中

@Test
public void createPool400() throws Exception {
    mockMvc
      .perform(post("/pools/test")
        .contentType(MediaType.APPLICATION_FORM_URLENCODED))
        //.param("poolName", "test"))
        .andExpect(status().isBadRequest());
}

测试应该返回错误的请求,因为没有给定poolname参数。如果我调试该方法,它会显示poolname可以为null或空。
我尝试了多种方法将数据提供给mockmvc,例如:

.content("poolName="))

.content(EntityUtils.toString(new UrlEncodedFormEntity(Arrays.asList(
          new BasicNameValuePair("poolName", (String) null)
        )))))

为什么没有验证?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题