コントローラーに次のコードがあります。
@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 アノテーションが付けられている
そのため、これのさまざまな順列(paramの代わりにrequestAttr、sessionAttrなど、その他いくつか)を試しましたが、機能しません。せいぜい @Valid 句で例外が発生する程度です。それ以外の場合は、実際にメソッドに入らずにテストに合格します。
いくつかの例に従おうとしましたが、特定のメソッド署名で何も見つかりません。
助けていただければ幸いです。