首页 > 解决方案 > 使用 String 时 MockMVC @PathVariable 不起作用

问题描述

当 Pathvariable 是 String 但适用于 int 时,Mockmvc 测试不起作用。这是我的代码:

@Controller
@RequestMapping("/etablissement/{typeEtablissement}")
public class EtablissementController{
    @RequestMapping(method = RequestMethod.GET)
    public String accueil(@PathVariable("typeEtablissement") String typeEtablissement) {
        return "/test";
    }
}

// somewhere in my test
mockMvc.perform(get("/etablissement/{typeEtablissement}", "test")).andExpect(status().isOk()); // Error 400

但是,如果我使用 int 而不是 String 它可以工作

@RequestMapping(method = RequestMethod.GET)
public String accueil(@PathVariable("typeEtablissement") int typeEtablissement) {
    return "/test";
}

// somewhere in my test
mockMvc.perform(get("/etablissement/{typeEtablissement}", 123)).andExpect(status().isOk()); // Works

使用对象也可以

public String accueil(@PathVariable("typeEtablissement") Object typeEtablissement) {}

谢谢你的帮助 !

标签: spring-bootspring-mvcmockitomockmvc

解决方案


这是一个可以帮助您的 GetMapping 示例:

@GetMapping("/{typeEtablissement}/{something2}/{something3}")
    public List<Object> extract(
            @PathVariable String typeEtablissement,
            @PathVariable String something2,
            @PathVariable String something3) {

List<Object> object = objectService.extractDatas(typeEtablissement, something2, something3);

return object;
}

推荐阅读