Spring MVC пишет модульный тест для сервисного уровня, который возвращает представление - PullRequest
2 голосов
/ 21 июня 2019

Мне нужно провести модульное тестирование моего сервисного уровня, но я не знаю, как это сделать, поскольку я новичок в SpringMvc.

Вот метод, который я хочу проверить:

@Override
public String update(String username, User newUserData, BindingResult result, Model model) {
    if (result.hasErrors()) {
        updateModelData(model, "", result.getAllErrors());
        return HOME_VIEW_NAME;
    }

    User foundUser = this.userRepository.findByUsername(username);
    if (foundUser == null) {
        throw new UserNotFoundException(username);
    }

    String queryResult = String.format("UPDATED SUCCESSFULLY: \n Old User: %s", foundUser);
    foundUser.setPassword(encryptPassword(newUserData.getPassword()));
    foundUser.setStatus(newUserData.getStatus());
    queryResult += String.format("New User: %s", foundUser);

    this.userRepository.save(foundUser);

    updateModelData(model, queryResult, new ArrayList<>());
    return HOME_VIEW_NAME;
}

Первый - Хотелось бы узнать, стоит ли сохранять Model, BindingResult и возвращать страницу в слое Service? Если нет, то почему?

Второй - Как правильно проверить этот метод?

Спасибо!

1 Ответ

2 голосов
/ 21 июня 2019

Я думаю, что лучше возвращать страниц в контроллере .Я считаю, что разработчики Spring создали такие аннотации @Component, @Repository, @Service, @Controller, чтобы также обеспечить контекст для любого слоя, к которому принадлежит конкретный компонент.Вы можете проверить это обсуждение SO на предмет этого .

По второму вопросу вы можете проверить Spring MVC test framework .Вы можете проверить MockMvc, есть множество ссылок в документации, а также в хранилище проектов Spring .

Я думаю, что вам понадобится что-то вроде приведенного ниже фрагментаесли вы хотите проверить свой сценарий, в котором он обновился до вида после обновления:

MockMvc mockMvc;

mockMvc.perform(get("/path/to/update/resource"))
            .andExpect(status().isOk())
            .andExpect(modelAndView().getViewName().isEqualTo("your_view_name"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...