当前位置: 首页 > 知识库问答 >
问题:

使用字符串[]作为请求体的Mockmvc单元测试

瞿宏儒
2023-03-14

我试图为PUT api创建一个单元测试,如下所示,使用一个String[]作为请求体。

@RequestMapping(value = "/test/id", method = RequestMethod.PUT)
public ResponseEntity<?> updateStatus(@RequestBody String[] IdList,.........){
}

我的测试如下所示

@Test
public void updateStatus() throws Exception {
    when(serviceFactory.getService()).thenReturn(service);        
    mockMvc.perform(put(baseUrl + "/test/id)
        .param("IdList",new String[]{"1"}))
        .andExpect(status().isOk());

}

测试失败,但有以下例外:

java.lang.AssertionError: Status expected:<200> but was:<400>

从mockmvc传递字符串数组参数的最佳方法是什么?

共有1个答案

谢哲瀚
2023-03-14

您正在将字符串[]放入param中。你把它放进身体里了。您可以这样说(我假设您使用的是JSON,如果您使用的是xml,您可以相应地更改它):

ObjectMapper mapper =  new ObjectMapper();
String requestJson = mapper.writeValueAsString(new String[]{"1"});
mockMvc.perform(put(baseUrl + "/test/id)
                    .contentType(MediaType.APPLICATION_JSON_UTF8).content(requestJson)
                    .andExpect(status().isOk())
                    .andExpect(jsonPath("$.[0]", is("1")));

jsonPathorg.springframework.test.web.servlet.result.mockmvcresultmatchers.jsonPath

 类似资料:
  • 问题内容: 我有一个使用UTF-8字符串输出文本表的程序,并且我需要测量字符串使用的等宽字符单元数,以便正确对齐它。如果可能的话,我想使用标准功能。 问题答案: 来自Unix / Linux的UTF-8和Unicode常见问题解答 : 可以使用C以可移植的方式在C中计算字符数。只要已选择适当的语言环境,此方法就可以与其他支持的编码一样适用于UTF-8。计算UTF-8字符串中字符数的一种硬连接技术是

  • 在Spring Boot控制器方法中,我可以将json post请求主体映射到POJO,例如。 我还可以将原始请求正文作为字符串检索: 我的问题是如何将请求体映射到POJO,并将原始请求体作为字符串检索(用于日志目的)。 谢谢

  • 问题内容: 我有简单的集成测试 在最后一行中,我想将响应正文中收到的字符串与预期字符串进行比较 作为回应,我得到: 使用content(),body()尝试了一些技巧,但没有任何效果。 问题答案: @Sotirios Delimanolis回答完成了这项工作,但是我一直在寻找在此模拟Mvc断言中比较字符串的方法 所以这是 当然,我的主张失败了: 因为: 因此,这证明它有效!

  • 我正在尝试测试我的控制器方法,它将输入参数作为我应用程序中的一个对象。我知道如何用字符串作为输入参数进行测试,但不知道如何用定制的对象进行测试。 下面是我应用程序中的代码 我认为下面的测试代码是测试的方法之一。但它失败了 当我运行上面的测试时,我得到一个错误,说“实际上,这个模拟没有任何交互”。 你能帮我把定制对象传递给MockMvc post方法吗。

  • 我有简单的集成测试 在最后一行中,我想比较响应体中接收到的字符串和预期的字符串 我得到的答复是: 尝试了content()、body()的一些技巧,但没有效果。

  • 我在Excel中的VBA宏中使用了以下代码: 在即时窗口中,我收到了以下错误: 400 Apache Tomcat/8.0.28-错误报告1{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}H2{font-family:Tahoma,Arial,sans-serif;颜