【问题标题】:How can I test if a jSON object is the same as I POSTED it using Mockito?如何测试 JSON 对象是否与我使用 Mockito 发布的对象相同?
【发布时间】:2017-12-25 21:25:42
【问题描述】:

这是我的终点:

 @PostMapping("/email/registration")
  public Data registration(@RequestBody Data data, HttpServletRequest 
  httpServletRequest) throws Exception {
  emailSenderService.pushEmail(httpServletRequest.getRequestURI(),          
  emailSenderService.sendConfirmationEmail(httpServletRequest.getRequestURI(), data));
  emailSenderService.consumeEmail(httpServletRequest.getRequestURI());
  return data;
  }

这是我的测试(当然它不起作用):

  @Test
  public void testRegistrationConfirmation() throws Exception {
      Data testData = new Data();
      when(testData).thenReturn(testData);
      mockMvc.perform(
              post("/email/registration")
                      .contentType(MediaType.APPLICATION_JSON)
                      .content(asJsonString(testData)))
              .andExpect(status().isOk())
              .andExpect(testData);
  }

我想看看给定对象是否与返回对象相同,最好不要用值填充所有字段。

感谢您的回答!

【问题讨论】:

标签: java spring rest post mockito


【解决方案1】:

它可能更优雅,但您可以使用 Jackson 为您制作 json:

@Test
  public void testRegistrationConfirmation() throws Exception {
      Data testData = new Data();
      when(testData).thenReturn(testData);
      mockMvc.perform(
              post("/email/registration")
                      .contentType(MediaType.APPLICATION_JSON)
                      .content(asJsonString(testData)))
              .andExpect(status().isOk())
              .andExpect(content().string(equalTo(new ObjectMapper().writeValueAsString(testData))));
  }

【讨论】:

  • .andExpect(new ObjectMapper().writeValueAsString(testData));说它不能应用于字符串
  • @Vitya 抱歉打错了,我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 2015-03-27
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2015-03-01
相关资源
最近更新 更多