1

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

@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、sessionAttr 等,而不是 param 和其他一些),但我无法让它工作。充其量我在@Valid 子句上得到了例外。其他时候,测试将通过而无需实际输入方法。

我试图遵循一些示例,但找不到具有我特定方法签名的任何内容。

4

0 回答 0