我在Spring MVC Controller中定义了这个方法:
@RequestMapping(value = "{id}/content", method=RequestMethod.POST)
@PreAuthorize("principal.user.userAccount instanceof T(com.anonym.model.identity.PedagoAccount) AND principal.user.userAccount.userId == #object.pedago.userId AND #form.id == #object.id")
public String modifyContent(@PathVariable("id") Project object, @Valid @ModelAttribute("form") ProjectContentForm form) {
....
}
Run Code Online (Sandbox Code Playgroud)
然后在我的JUnit测试中,我想调用此方法并确保验证PreAuthorize条件.但是当我在JUnit测试中使用错误帐户设置用户主体时,没有错误,方法完成.似乎绕过了注释.
但是当我以正常方式调用此方法(而不是测试)时,将验证PreAuthorize.
如果可能的话,如何在junit测试中测试这个注释以及如果它抛出一个异常如何捕获它?
谢谢,
尼古拉斯
当我做junit测试时,我会做这样的事情来测试spring mvc控制器:
request.setRequestURI("/projects/"+idProject+"/modify");
ModelAndView mv = handlerAdapter.handle(request, response, controller);
Run Code Online (Sandbox Code Playgroud)
控制器测试的地方如下:
@RequestMapping(value = "{id}/modify")
public String content(ModelMap model, @PathVariable("id") Project object) {
Run Code Online (Sandbox Code Playgroud)
但我没有找到如何得到如下ResponseBody定义的请求处理程序的答案:
@RequestMapping("/management/search")
public @ResponseBody ArrayList<SearchData> search(@RequestParam("q")) {
....
....
ArrayList<SearchData> datas = ....;
return datas;
}
Run Code Online (Sandbox Code Playgroud)