我正在为我的控制器方法编写单元测试。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)
)))))
为什么没有验证?
暂无答案!
目前还没有任何答案,快来回答吧!