如何在控制器层中测试特定条件?

时间:2019-06-09 11:34:44

标签: java spring-mvc testing mocking

所以...我的控制器中有一个简单的方法“ addUser”。当数据库中已经存在具有给定电子邮件的用户时,我想测试第一个if语句。在setUp方法中,我创建一个具有用户名,姓氏,电子邮件等字段的示例用户。当我将与 param 完全相同的电子邮件放入模拟Mvc中时,我希望它返回“ register / new -register” ,但它返回“ register / register-success” 。我是测试的新手,无法找到此问题的答案。这是我的代码。请告诉我如何测试这部分,或者至少是即时消息,即使我做对了?

 @PostMapping("/register")
    public String addUser(@ModelAttribute @Valid User user,
                          BindingResult bindResult) {
        if(userService.isAlreadyRegistered(user.getEmail())){
            bindResult.rejectValue("email", "email.exists", "Email already in database");
            return "register/new-register";
        }
        else if(bindResult.hasErrors())
            return "register/new-register";
        else {
            userService.addWithDefaultRole(user);
            return "register/register-success";
        }
    }
@Test
    @WithMockUser
    public void addUserExists() throws Exception{

        mockMvc.perform(post("/user/register")
                .param("firstName", "test")
                .param("lastName", "test")
                .param("email", "test@test.com")
                .param("password", "test"))
                .andExpect(view().name("register/new-register"))
                .andExpect(status().isOk());
    }

0 个答案:

没有答案