Тестовый модуль Spring Mvc Login Controller - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть следующий LoginController:

@GetMapping(value = "/login")
public ModelAndView login(Model model, String error) {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("login");
    if (error != null) {
        model.addAttribute("error", error);
    }
    return modelAndView;
}

И я попытался написать для него модульный тест следующим образом:

public class LoginControllerTest {

private MockMvc mockMvc;

@Before
public void setUp() {
    mockMvc = MockMvcBuilders.standaloneSetup(new LoginController()).build();
}

@Test
public void testLogin() throws Exception {
    this.mockMvc.perform(get("/login"))
            .andExpect(status().isOk())
            .andExpect(view().name("login"))
            .andDo(print());

}
}

Единственная проблема в том, что я не знаю, как обработать часть ошибки:

model.addAtribute("error", error);

Кроме того, я получаю это сообщение об ошибке, когда пытаюсь запустить тест, как я его написал: Путь к циклическому представлению [login]: снова отправит обратно на текущий URL обработчика [/ login]. Проверьте настройки ViewResolver!

Есть идеи, как мне решить эту проблему и правильно написать тест?

UPDATE Я решил ошибку, которую получил, добавив в метод setUp:

public void setUp() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/login/");
    viewResolver.setSuffix(".jsp");

    mockMvc = MockMvcBuilders.standaloneSetup(new LoginController()).setViewResolvers(viewResolver).build();
}

Единственная проблема, с которой я столкнулся сейчас, заключается в том, что я не могу понять, как обработать часть ошибки из моего LoginController в моем модульном тесте. Можете ли вы помочь мне правильно написать полный тест?

Спасибо!

...