controller层单元测试[当service传入的参数是对象]

  int id=1;
    when(userService.addUser(userRequest)).thenReturn(id);
    MvcResult result=mockMvc.perform(post("/" + VERSION + "/api/user")
      .content(toJson(userRequest))
      .contentType(MediaType.APPLICATION_JSON)
      .accept(MediaType.APPLICATION_JSON))
      .andExpect(status().isCreated())
      .andReturn();
    String userResponse=result.getResponse().getContentAsString();
    String content= JsonUtil.readObjectFromJson(userResponse, Map.class).get("id").toString();
    Assert.assertEquals(content,String.valueOf(id));

如上面代码所示,userService传入的参数是一个message对象,因此你mock service当传入是userrequest,得到结果是1.但是当测试时,将userRequest转化成json传入POST方法时,最终组装好传入service的userRequest的对象,java 默认的equeal方法不会认为这两个对象是一样的。
所以,我们要做的是重载userRequest的equal方法
就像这样

@Override
  public boolean equals(Object obj) {
    if (!obj.getClass().equals(UserRequest.class)) {
      return false;
    }
    UserRequest other = (UserRequest) obj;
    if (id != other.id) {
      return false;
    }
    if (!username.equals(other.username)) {
      return false;
    }
    if (!phone.equals(other.phone)) {
      return false;
    }
    if (email!=null&&!email.equals(other.email)) {
      return false;
    }
    if (!password.equals(other.password)) {
      return false;
    }
    if (!confirmPassword.equals(other.confirmPassword)) {
      return false;
    }
    return true;
  }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 孙长波阅读 1,387评论 0 1
  • 《战狼2》太火了,以至于让公众的视线从乐视欠债风波中短暂的移开。 由于自己有军人情结,以及对动作电影的热爱,也去电...
    司马养马阅读 4,278评论 3 4
  • 人生是一条漫长的单行道,每个人的选择不一样,视野不一样,看到的风景也不一样。但是总有一些人,一些物,是在同一个频道...
    繁花落尽深眸阅读 6,740评论 18 22
  • 念今生,风烟流年,牵手你的手走过滚滚红尘,用一季的花香,盛开出一世的芬芳。 挥一挥水墨化作一纸丹青,似影相随,撷来...
    南风过兮阅读 3,446评论 1 1

友情链接更多精彩内容