在我们的代码中,对控制器的请求映射定义如下:
@Controller
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping("/some/page")
public String showUsers(Model model) {
if(model == null) {
throw new IllegalArgumentException("Parameter value is null where prohibited.");
}
// Some other checking and additions to the model
return "some/redirect";
}
}
关于单元测试,我们已经有可以检查所有“其他”检查(例如用户登录等)的测试。但是我们不对model
等于null
的情况进行单元测试。
我的问题: 模型可以为空吗?如果是这样,我们如何在单元测试中对此进行测试?
可能性1 (但返回NullPointerException)
@Test
public void showUsers_GiveNullValueAsModel_ReturnsIllegalArgumentException() throws Exception {
String returnValue = userController.showUsers(null);
assertThat(returnValue, is("Parameter value is null where prohibbited."));
}
可能性2 (但似乎不起作用)
@Test(expected = IllegalArgumentException.class)
public void showUsers_GiveNullValueAsModel_ReturnsIllegalArgumentException() {
this.mockMvc.perform(
get("/admin/users", null)
);
}