【问题标题】:Junit Mockito with spring - test case for the Json String returnJunit Mockito with spring - Json String 返回的测试用例
【发布时间】:2013-07-22 13:45:04
【问题描述】:

我正在学习 Junit Mockito 以在 Intellij 中使用 Spring 3.2 测试 spring-mvc 控制器。 我的控制器是

 @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"的目的是什么
  • 这是一个会话属性,当用户登录时我们将他们的密钥保存在会话属性中

标签: spring spring-mvc junit4 mockito springmockito


【解决方案1】:

嗯。

你可以试试

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

在测试夹具中设置 userClientObject。

“return getUserByName(userClient, firstName, lastName);”是什么意思?究竟是做什么的?如果不涉及外部依赖,只需在 andExpect(jsonPath()) 子句中断言返回即可。

顺便说一下,我认为应该是@SessionAttribute。

【讨论】:

  • 它返回 json 格式的字符串。我将如何测试该字符串在春季不为空
  • Try andExpect(content().string("your json string here"))
  • 是否可以检查内容是否有字符串而不是等号
  • 如果您想要断言返回的 json 字符串,这可能会有所帮助。 andExpect(jsonPath("fName").exists()//或其他方便的方法)
  • 它显示错误`java.lang.NoClassDefFoundError: com/jayway/jsonpath/InvalidPathException`。我是否需要包含任何其他库
【解决方案2】:

我用

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

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多