Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring mvc控制器上的MockMvc_Spring_Model View Controller_Mocking_Mockmvc - Fatal编程技术网

spring mvc控制器上的MockMvc

spring mvc控制器上的MockMvc,spring,model-view-controller,mocking,mockmvc,Spring,Model View Controller,Mocking,Mockmvc,我的控制器中有以下代码: @Controller @RequestMapping(value="/my") public class MyController { @RequestMapping(value="/zone/{id}", method=RequestMethod.POST) public ModelAndView zone(@PathVariable Long id, @Valid MyFormBean formBean){ System.out.pr

我的控制器中有以下代码:

@Controller
@RequestMapping(value="/my")
public class MyController  {

    @RequestMapping(value="/zone/{id}", method=RequestMethod.POST)
    public ModelAndView zone(@PathVariable Long id, @Valid MyFormBean formBean){

    System.out.println(formBean.getId());
    ModelMap mod = new ModelMap();
    mod.put("test", true);
    return new ModelAndView(myViewName, model);
    }
}
以及MyControllerTest类中的以下代码

public class MyControllerTest {
  @InjectMocks
  private MyController myController = new MyController();

  private MockMvc mockMvc = MockMvcBuilders.standaloneSetup(MyController).build();

  @Before
  public void setUp() {
    MockitoAnnotations.initMocks(this);
  }

  @Test
  public void myTest() {
     MyFormBean formBean = new MyFormBean();
     formBean.setId(5L);
     ModelAndView mav = new ModelAndView();

     int id = 10;

     try {
       MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/my/zone/" + id).param("formData", formData.toString())).andReturn();
     } catch(Exception e) {
       fail(e.getMessage());
     }
}
MyFormBean中的id字段用@NotNull注释

所以我尝试了各种排列(requestAttr、sessionatr等,而不是param和其他一些),但我无法让它工作。充其量我只能得到@Valid子句的例外。其他时候,测试将通过,而不实际输入方法

我尝试了以下几个示例,但找不到任何与我的特定方法签名相关的内容


感谢您的帮助。

问题不在您的测试中,问题在于您的主代码(控制器),因为url路径只映射到用
@PathVariable
注释的参数,而不映射到表单对象中

你能详细说明一下吗?控制器方法按预期运行,是否需要将表单对象添加到requestmapping?这说明我对您的问题理解错误。你能详细解释一下“我不能让它工作”吗?