2015-06-04 1 views
2

Я предполагаю, что это простая проблема, но я не могу обойти ее. это класс, для которого мне нужно написать тестовый случайСтраница входа в систему Junit test с mockito

@Controller 
@SessionAttributes 
public class LoginController { 


@RequestMapping(value = "/Login", method = RequestMethod.GET) 
public ModelAndView displayLogin(@RequestParam(value = "error", required = false) String error, 
           @RequestParam(value = "logout", required = false) String logout, 
           HttpServletRequest request, 
           HttpServletResponse response) { 

    ModelAndView modelForLogin = new ModelAndView(); 

    if (error != null) { 

     // Include login failure message 
     modelForLogin.addObject("loginFailure", "Invalid username and password!"); 

    } 

    if ("user".equals(logout)) { 

     // Include logout message 
     modelForLogin.addObject("msg", "You've been logged out successfully."); 
    } 

    else { 

     modelForLogin.addObject("msg",""); 
    } 


    modelForLogin.setViewName("Login"); 

    return modelForLogin; 

} 

}

Это то, что у меня до сих пор ...

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration({ " servlet-xml "}) 

public class LoginControllerTest { 


@Mock HttpServletRequest request; 
@Mock HttpServletResponse response; 
@Mock HttpSession session; 


private MockMvc mockMvc; 

@Before 
protected void setUp() throws Exception { 
    MockitoAnnotations.initMocks(this); 
    ModelAndView modelForLogin = mockito.mock(ModelAndView.class); 
    mockito.when(modelForLogin.error()).thenReturn("error"); 
    mockito.when(modelForLogin.logout()).thenReturn("logout"); 

} 

@Test 
public void TestLoginError() throws Exception { 

    mockMvc.perform(get("/Login").param()).andExpect(status().isOk()).andExpect(model().attributeExists("msg")); 


} 



@Test 
public void testLogin() throws Exception { 

    mockMvc.perform(get("/Login")).andExpect(status().isOk()); 
    mockMvc.perform(get("/Login").param("logout", "log")).andExpect(status().isOk()).andExpect(model().attributeExists("msg")); 
    mockMvc.perform(get("/Login").param("error", "log")).andExpect(status().isOk()).andExpect(model().attributeExists("error")); 
    mockMvc.perform(get("/Login").param("logout", "log").param("error", "log")).andExpect(status().isOk()).andExpect(model().attributeExists("msg")).andExpect(model().attributeExists("error")); 
    mockMvc.perform(get("/Login")).andExpect(status().isOk()).andExpect(view().name("login")); 
} 

}

Может кто-нибудь пожалуйста дайте мне знать правильный способ написать тестовый пример для этого?

ответ

3

Учитывая, что у вас есть код, вам не нужно издеваться. Образец тестового примера будет выглядеть следующим образом:

ModelAndView mvw = displayLogin("error", null, null, null); 
assertEquals("Invalid username and password!", mvw.getModelMap().get("loginFailure")); 
+0

Я думаю, что вы можете следовать за свинцом и фигурировать сами – 6ton

Смежные вопросы