Nano Hash - криптовалюты, майнинг, программирование

Junit Mockito с пружиной — тестовый пример для возврата Json String

Я изучаю Junit Mockito для тестирования контроллера spring-mvc с использованием Spring 3.2 в Intellij. мой контроллер

 @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String initUserSearchForm(ModelMap modelMap) {
        User user = new User();
        modelMap.addAttribute("User", user);
        return "linkedInUser";
    }

    @RequestMapping(value = "/byName", method = RequestMethod.GET)
    @ResponseStatus(HttpStatus.OK)
    public
    @ResponseBody
    String getUserByName(HttpServletRequest request,@ModelAttribute("userClientObject") UserClient userClient) {
        String firstName = request.getParameter("firstName");
        String lastName = request.getParameter("lastName");
        return getUserByName(userClient, firstName, lastName);
    }

что я сделал, так это то, что у меня есть одна форма для поиска пользователя по имени. Объект UserClient - это атрибут сеанса, и я попытался написать тестовый пример junit для своего контроллера.

 @Test
    public void testInitUserSearchForm() throws Exception {
        this.liClient = client.createUserClient();
        mockMvc.perform(get("/user"))
                .andExpect(status().isOk())
                .andExpect(view().name("user"))
                .andExpect(forwardedUrl("/WEB-INF/pages/user.jsp"));
    }

    @Test
    public void testGeUserByName() throws Exception {
        String firstName = "Wills";
        String lastName = "Smith";         
        mockMvc.perform(get("/user-byName"))
                .andExpect(status().isOk());

    }

Как мне проверить мой метод getUserByName и как мне добавить атрибут сеанса? Пожалуйста, кто-нибудь может помочь мне написать тестовый пример с возможными тестами для этого метода. заранее спасибо


  • Какова цель @ModelAttribute(userClientObject) UserClient userClient 22.07.2013
  • Это атрибут сеанса, когда пользователь входит в систему, мы сохраняем его секретный ключ в атрибуте сеанса. 23.07.2013

Ответы:


1

Хм.

Вы могли бы попробовать

mockMvc.perform(get("/user-byName").sessionAttr("userClientObject", userClientObject))
            .andExpect(status().isOk());

для настройки userClientObject в тестовом приспособлении.

Что означает «вернуть getUserByName (userClient, firstName, lastName);» именно делать? Если это не связано с внешней зависимостью, просто подтвердите свой возврат в предложении andExpect(jsonPath()).

Кстати, я думал, что это должен быть @SessionAttribute.

23.07.2013
  • Он возвращает строку в формате json. Как бы я проверил, что строка не пуста весной 23.07.2013
  • Попробуйте andExpect(content().string(ваша строка json здесь)) 23.07.2013
  • Можно ли проверить, есть ли в содержимом строка вместо равенства 23.07.2013
  • Возможно, это поможет, если вы хотите утвердить возвращенную строку json. andExpect(jsonPath(fName).exists()//или другой удобный метод) 23.07.2013
  • Он показывает ошибку `java.lang.NoClassDefFoundError: com/jayway/jsonpath/InvalidPathException`. Нужно ли включать какие-либо другие библиотеки 24.07.2013
  • это всегда ноль java.lang.AssertionError: JSON pathfn expected:<Sam> but was:<null> я использовал .andExpect(jsonPath("fn").value("Sam")) 24.07.2013
  • Да, я нашел в Интернете maven gav com.jayway.jsonpath:json-path:0.5.5. 24.07.2013
  • Этот stackoverflow.com /questions/13362372/ может поможет. 24.07.2013
  • Можно ли выполнить модульный тест mockito для этого кода выше. Я искал в гуле, но я понятия не имел. Вы можете мне помочь 26.07.2013
  • Это зависит от того, что находится в вашем getUserByName(userClient, firstName, lastName); очень сложно настроить тестовое приспособление. Возможно, вам придется опубликовать еще один вопрос, чтобы обсудить это (из-за правил Stackoverflow). 26.07.2013
  • Привет, Гиппом. Я разместил новый вопрос stackoverflow.com/questions /17915828/. 29.07.2013

  • 2

    я использую

    mockMvc.perform(get("/user-byName").flashAttr("userClientObject", userClientObject)) .andExpect(status().isOk())

    30.10.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..